题记:之前一直用timer,突然用了次ThreadPool来注册线程,发现在注销的时候不会了(%>_<%),于是简单记录几句:
private AutoResetEvent autoReset = new AutoResetEvent(false);
private RegisteredWaitHandle h;
使用:
h = ThreadPool.RegisterWaitForSingleObject(autoReset, ParallelClearLog, null, 100, false);
在想要终止的时候设置(相当于设置一个消息):
autoReset.Set();
最后,真正取消线程的如下操作:
if (h != null) {
h.Unregister(null);
}
当然,既然可以取消,已可以在此重置(可用于文件断点续传这种情况,超时重连.....)
h.Unregister(autoReset);
(end)
参考资料:https://msdn.microsoft.com/zh-cn/magazine/system.threading.registeredwaithandle.unregister(v=vs.110).aspx