随手记一次如何注销线程池

题记:之前一直用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

posted @ 2016-07-01 13:41  大白的记事本  阅读(644)  评论(0编辑  收藏  举报