其 实很简单用ThreadPool.RegisterWaitForSingleObject方法注册一个定时检查线程池的方法,在检查线程的方法内调用 ThreadPool.GetAvailableThreads与ThreadPool.GetMaxThreads并比较两个方法返回的值是不是相等, 相等表示线池内所有的线程已经完成.

//每秒检次一次线程池的状态
RegisteredWaitHandle rhw = ThreadPool.RegisterWaitForSingleObject(AutoResetEvent(false), this.CheckThreadPool, null, 1000, false);//检查线程池的方法private void CheckThreadPool(object state, bool timeout){int workerThreads = 0;int maxWordThreads = 0;//int int compleThreads = 0;ThreadPool.GetAvailableThreads(out workerThreads, out compleThreads);ThreadPool.GetMaxThreads(out maxWordThreads, out compleThreads);//当可用的线数与池程池最大的线程相等时表示线程池中所有的线程已经完成if (workerThreads == maxWordThreads){//当执行此方法后CheckThreadPool将不再执行rhw.Unregister(null);//此处加入所有线程完成后的处理代码
 }}

C#如何判断线程池中所有的线程是否已经完成(转)相关推荐

  1. Java线程池线程突然没了_70%人答不全!线程池中的一个线程异常了会被怎么处理?...

    #线程池中的一个线程异常了会被怎么处理? 估计很多人会是以下三点答案(me too): 1.抛异常出来并打印在控制台上 2.其他线程任务不受影响 3.异常线程会被回收 但是这里我先提前说一下以上三点不 ...

  2. 线程池中运行的线程,当等待队列未满的情况下,一定不大于核心线程数吗

    通过<线程池内运行的线程抛异常,线程池会怎么办>了解到当线程执行的任务出现异常时,会将当前线程移出线程池,并新增一个线程到线程池中,我们先来回顾一下线程池的运行原理: 从原理图中可以看到只 ...

  3. [.Net线程处理系列]专题二:线程池中的工作者线程

    目录: 一.上节补充 二.CLR线程池基础 三.通过线程池的工作者线程实现异步 四.使用委托实现异步 五.任务 六.小结 一.上节补充 对于Thread类还有几个常用方法需要说明的. 1.1 Susp ...

  4. [C#]获得线程池中活动的线程数

    在C#中的线程池ThreadPool没有获得线程池中的活动线程数量的属性或者是方法,但是有一两个 方法可以帮助获得活动线程数. 这两个方法分别是:GetMaxThreads和GetAvailableT ...

  5. 突然就懵了!面试官问我:线程池中多余的线程是如何回收的?

    点击关注公众号,Java干货及时送达 最近阅读了JDK线程池ThreadPoolExecutor的源码,对线程池执行任务的流程有了大体了解,实际上这个流程也十分通俗易懂,就不再赘述了,别人写的比我好多 ...

  6. python 判断线程是否执行完毕_判断线程池中的线程是否全部执行完毕

    在使用多线程的时候有时候我们会使用 java.util.concurrent.Executors的线程池,当多个线程异步执行的时候,我们往往不好判断是否线程池中所有的子线程都已经执行完毕,但有时候这种 ...

  7. 判断线程池中的线程是否全部执行完毕

    在使用多线程的时候有时候我们会使用 java.util.concurrent.Executors的线程池,当多个线程异步执行的时候,我们往往不好判断是否线程池中所有的子线程都已经执行完毕,但有时候这种 ...

  8. 判断线程池中某个线程是否执行完成

    目录 1.先写结果 2.判断某个线程是否执行完成(不使用线程池) 3.在线程池中不能使用isAlive判断线程状态的原因 3-1.错误示例 3-2.创建线程工厂 3-3.创建线程方法(ThreadPo ...

  9. Java并发编程之线程池中的Future

    线程池中的Future: 线程池的典型使用场景 ExecutorService executorService = Executors.newFixedThreadPool(10);//此处Task为 ...

最新文章

  1. 改进C#代码之24:通过定义并实现接口替代继承
  2. 【poj3734】矩阵乘法求解
  3. MTK android flash配置
  4. linux下交叉编译libusb的方法及编译一个使用了libusb库的test程序的方法
  5. Flask入门系列(转载)
  6. 疯狂涨知识!「高并发秒杀」微信抢红包实战案例帮你突破瓶颈
  7. 0101代码构成了计算机语言,计算机(全国一级考试)理论复习要点、模拟题.doc
  8. c语言L文件,frexpl - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
  9. php中案值传递和安引用传递,PHP里的值传递与引用传递
  10. Kotlin入门(20)几种常见的对话框
  11. Andorid Studio NDK 开发 - Hello World
  12. python 当前日期_python 当前时间获取方法
  13. 芋道 Spring Cloud Netflix 注册中心 Eureka 入门
  14. OSChina 周四乱弹 —— 人类首张黑洞照片
  15. 基于sklearn实现Bagging算法(python)
  16. 【吐槽】B站大量番剧下架,程序猿们这时都在干什么?
  17. python中import string是什么意思_python string是什么
  18. 华大HC32L136--低功耗ADC功耗过高问题
  19. 你真的懂insert or update?
  20. 不晓得这是航拍器还是探测器之类的,肉眼根本无法看清

热门文章

  1. oracle创建 number,oracle创建表的方法和一些常用命令
  2. windows AD/DNS服务器搭建
  3. html中js定义数组,javascript数组的定义及操作实例
  4. linux脚本查看变量类型,Shell变量:Shell变量的定义、删除变量、只读变量、变量类型...
  5. Redis最佳实践:业务层面和运维层面优化
  6. MySQL IN、Exist关联查询时,我们为什么建议小表驱动大表?
  7. php 转义 回车 空格 file put content,为什么在服务器上php里执行file_put_contents创建文件返回是false呢,文件目录已经设置为777的权限了,不解...
  8. 网线传输速度测试_弱电工程CAT5eCAT6CAT6aCAT7网线怎么选择
  9. 什么叫序数_硬质合金是钨钢吗?两者之间有什么区别?
  10. open python语言实现 pdf_使用python操作Pdf代码实现