随手记一次如何注销线程池
題記:之前一直用timer,突然用了次ThreadPool來注冊線程,發(fā)現(xiàn)在注銷的時(shí)候不會了(%>_<%),于是簡單記錄幾句:
private AutoResetEvent autoReset = new AutoResetEvent(false);
private RegisteredWaitHandle h;
使用:
?h = ThreadPool.RegisterWaitForSingleObject(autoReset, ParallelClearLog, null, 100, false);
在想要終止的時(shí)候設(shè)置(相當(dāng)于設(shè)置一個(gè)消息):
autoReset.Set();
?
最后,真正取消線程的如下操作:
if (h != null) {
h.Unregister(null);
}
當(dāng)然,既然可以取消,已可以在此重置(可用于文件斷點(diǎn)續(xù)傳這種情況,超時(shí)重連.....)
h.Unregister(autoReset);
?
(end)
參考資料:https://msdn.microsoft.com/zh-cn/magazine/system.threading.registeredwaithandle.unregister(v=vs.110).aspx
轉(zhuǎn)載于:https://www.cnblogs.com/luo-super/p/5632760.html
總結(jié)
以上是生活随笔為你收集整理的随手记一次如何注销线程池的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NSObject中的常用方法
- 下一篇: 生成一定范围的随机数