題記:之前一直用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