class Program{static void Main(string[] args){//注意:ManualResetEvent可以对所有进行等待的线程进行统一控制//true-初始状态为发出信号;false-初始状态为未发出信号ManualResetEvent mre = new ManualResetEvent(false);//线程池开启10个线程for (int i = 0; i < 10; i++){int k = i;ThreadPool.QueueUserWorkItem(t =>{Console.WriteLine($"这是第{k+1}个线程,线程ID为{Thread.CurrentThread.ManagedThreadId}");//等待信号,没有信号的话不会执行后面的语句,因为初始状态是false,所以后面的语句暂时不会执行mre.WaitOne();Console.WriteLine($"第{k+1}个线程获得信号,线程ID为{Thread.CurrentThread.ManagedThreadId}");});}Thread.Sleep(5000);Console.WriteLine("\r\n 5秒后发出信号... \r\n");//Set()方法:释放信号,所有等待信号的线程都将获得信号,开始执行WaitOne()后面的语句mre.Set();Console.ReadKey();}}

执行结果如图

可见,没有信号时,WaitOne()后面的语句都不执行(被阻塞),当Set()释放信号后,所有阻塞的线程都开始继续执行。

ManualResetEvent的理解和使用相关推荐

  1. C# ManualResetEvent的理解和用法

    ManualResetEvent是C#中一个比较常用的工具,可用于线程间通信,实现一种类似信号量的功能(不知道我这样描述是否恰当,有可能不是"类似",而"就是" ...

  2. 对AutoResetEvent和ManualResetEvent的理解

    一.作用 AutoResetEvent和ManualResetEvent可用于控制线程暂停或继续,拥有重要的三个方法:WaitOne.Set和Reset. 这三个方法的官方定义并不好理解,什么终止.非 ...

  3. 个人对AutoResetEvent和ManualResetEvent的理解

    仅个人见解,不对之处请指正,谢谢. 一.作用 AutoResetEvent和ManualResetEvent可用于控制线程暂停或继续,拥有重要的三个方法:WaitOne.Set和Reset. 这三个方 ...

  4. SqlCommand.Parameters转SqlParameter 的输出函数取值为空的坑

    经过测试发现 直接循环赋值发现, SqlCommand.Parameters没指定size,但是转sqlparammeter没指定size就会导致字符串为空, 之前也尝试过拷贝,发现内存中size就是 ...

  5. 简单理解AutoResetEvent及ManualResetEvent

    AutoResetEvent: 构造方法:AutoResetEvent对象有两个状态,有信号和无信号,在初始化时可以分别用true和false指定 WaitOne:该对象在无信号时调用WaitOne方 ...

  6. 深入理解C#:编程技巧总结(二)

    以下总结参阅了:MSDN文档.<C#高级编程>.<C#本质论>.前辈们的博客等资料,如有不正确的地方,请帮忙及时指出!以免误导! 在上一篇 深入理解C#:编程技巧总结(一) 中 ...

  7. c# AutoResetEvent和ManualResetEvent

    网上有很多AutoResetEvent和ManualResetEvent的详细介绍,在这里不做过多详细的解释,写下自己的一点心得留作备忘. AutoResetEvent和ManualResetEven ...

  8. C# AutoResetEvent / ManualResetEvent

    个人理解这个应该就相当于一个旗标,在不同线程之间创建一个都可以使用的bool量 AutoResetEvent 常常被用来在两个线程之间进行信号发送,两个线程共享相同的AutoResetEvent对象, ...

  9. 通用解题法——回溯算法(理解+练习)

    积累算法经验,积累解题方法--回溯算法,你必须要掌握的解题方法! 什么是回溯算法呢? 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就&quo ...

最新文章

  1. 推荐本人微博及浅谈发博原则
  2. linux系统利用可执行文件的Capabilities实现权限提升
  3. 自动填充控件AutoCompleteExtender控件实现代码
  4. 全球及中国汽车后视镜行业供需分析与需求前景预测报告2022-2027年
  5. CS224n笔记13 卷积神经网络
  6. [CF706D]Vasiliy's Multiset(异或字典树)
  7. 实录:有钱男性的真实私生活
  8. hadoop hdfs空间满后重新启动不了
  9. 在 Mac 上如何使用时间机器备份文件?
  10. linux mysql 5.7.13 安装_Linux环境下mysql5.7.13安装教程
  11. Arcgis制作行政区划矢量文件(shp格式)
  12. LTE下行物理层传输机制(5)-DCI格式的选择和DCI1A
  13. 肩外展固定支架的规格参数介绍和使用方法
  14. 联想电脑尺寸在哪里看_联想电脑型号怎么查看【详细介绍】
  15. Pytorch聊天机器人
  16. Unity报错之【发布UWP显示“Could not find any supported UWP SDK installations”】
  17. 研究发现:“帽子”越多越高的教师,对研究生越没有用
  18. 电磁场与仿真软件(35)
  19. 浅谈数据抓取的几种方法
  20. 百度员工离职总结:如何做个好员工

热门文章

  1. cesium 实现绕点旋转效果
  2. 五大常用算法——分治法,动态规划,回溯法,分支界限法,贪心算法
  3. UIBeziberPath创建颜色渐变图案
  4. appliedzkp的zkevm(3)Word Encoding
  5. opencv二值化找轮廓检测背景简单小物体
  6. 课堂作业--密码强度判断
  7. 汉字的内码和区位码与显示汉字原理
  8. MySQL存储过程实战二:语法讲解。
  9. 共轭梯度法解求解大规模稀疏矩阵,对比最速梯度法(C++)
  10. maven md5依赖包