当我使用  ThreadPool.QueueUserWorkItem 将操作加入到线程池中时,如果在正常情况下,等到线程池队列中的线程全部执行完后,可以再次使用它。但如果当ThreadPool中有线程正在执行时,我想强行中断它,并且还要在下一次使用它,应该怎样操作呢。
怎样把ThreadPool中的线程清空,将它重置为一个空的线程池?

解决方案 »

  1.   

    这个好像是不行,你可以用一个成熟的线程池,smartpool  开源的。。你想的到的功能都封装好了
      

  2.   

    用第三方的线程池吧,或者自己写一个系统的线程池很多模块都会用到,并不一定是你显示调用ThreadPool.QueueUserWorkItem才会使用到的
      

  3.   

    线程池线程怎么能清空呢?那还叫线程池么?
    线程池交由CLR管理,“多退少补”,“前赴后继”,“开源节流”,总是会维持最佳的平衡,
    不管怎样不能小于你处理器的数目
    线程池有个最少工作线程,最多工作线程,还有自由线程,这些设置都只能给定个活跃数范围,绝不能清空
    假设能清空,线程池马上补上倒是连接池可以清空,毕竟是可以手动管理: SqlConnection.ClearAllPools();