日期:2014-05-18  浏览次数:21326 次

请问怎样清空ThreadPool中的所有线程?
当我使用 ThreadPool.QueueUserWorkItem 将操作加入到线程池中时,如果在正常情况下,等到线程池队列中的线程全部执行完后,可以再次使用它。

但如果当ThreadPool中有线程正在执行时,我想强行中断它,并且还要在下一次使用它,应该怎样操作呢。
怎样把ThreadPool中的线程清空,将它重置为一个空的线程池?

------解决方案--------------------
这个好像是不行,你可以用一个成熟的线程池,smartpool 开源的。。你想的到的功能都封装好了
------解决方案--------------------
用第三方的线程池吧,或者自己写一个

系统的线程池很多模块都会用到,并不一定是你显示调用ThreadPool.QueueUserWorkItem才会使用到的
------解决方案--------------------
线程池线程怎么能清空呢?那还叫线程池么?
线程池交由CLR管理,“多退少补”,“前赴后继”,“开源节流”,总是会维持最佳的平衡,
不管怎样不能小于你处理器的数目
线程池有个最少工作线程,最多工作线程,还有自由线程,这些设置都只能给定个活跃数范围,绝不能清空
假设能清空,线程池马上补上

倒是连接池可以清空,毕竟是可以手动管理:
C# code
 SqlConnection.ClearAllPools();

------解决方案--------------------
直接用线程做就行了呗
------解决方案--------------------
线程池本身就是不能控制的,你要精确控制线程就必须自定义线程数组。