这期内容当中小编将会给大家带来有关ManualResetEvent怎么在C#项目中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
第一、简单介绍
ManualResetEvent 允许线程通过发信号互相通信。通常,此通信涉及一个线程在其他线程进行之前必须完成的任务。当一个线程开始一个活动(此活动必须完成后,其他线程才能开始)时,它调用 Reset 以将 ManualResetEvent 置于非终止状态,此线程可被视为控制 ManualResetEvent。调用 ManualResetEvent 上的 WaitOne 的线程将阻止,并等待信号。
当控制线程完成活动时,它调用 Set 以发出等待线程可以继续进行的信号。并释放所有等待线程。一旦它被终止,ManualResetEvent 将保持终止状态(即对 WaitOne 的调用的线程将立即返回,并不阻塞),直到它被手动重置。可以通过将布尔值传递给构造函数来控制 ManualResetEvent 的初始状态,
如果初始状态处于终止状态,为 true;否则为 false。
第二、代码演示
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading; usingSystem.Threading.Tasks; namespaceConsoleApplication2 { classMyThread { Threadt=null; ManualResetEventmanualEvent=newManualResetEvent(true);//为trur,一开始就可以执行 privatevoidRun() { while(true) { this.manualEvent.WaitOne(); Console.WriteLine("线程id:{0}",Thread.CurrentThread.ManagedThreadId); Thread.Sleep(2000); } } publicvoidStart() { this.manualEvent.Set(); } publicvoidStop() { this.manualEvent.Reset(); } publicMyThread() { t=newThread(this.Run); t.Start(); } } classProgram { staticvoidMain(string[]args) { MyThreadmyt=newMyThread(); while(true) { Console.WriteLine("输入stop后台线程挂起start开始执行!"); stringstr=Console.ReadLine(); if(str.ToLower().Trim()=="stop") { Console.WriteLine("线程停止运行...\n"); myt.Stop(); } if(str.ToLower().Trim()=="start") { Console.WriteLine("线程开启运行...\n"); myt.Start(); } } } } }
运行测试结果
上述就是小编为大家分享的ManualResetEvent怎么在C#项目中使用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注恰卡编程网行业资讯频道。
C#中的WebRequest与WebResponse抽象类、DNS静态类、Ping类实例分析
C++引用如何使用
flutter怎么封装点击菜单工具栏组件checkBox多选版
JavaScript怎么实现淘宝网图片的局部放大功能
flutter怎么封装单选点击菜单工具栏组件
小程序怎么开发调用微信支付及微信回调地址
Python怎么通过变量ID得到变量的值
Python如何实现功能全面的学生管理系统
idea怎么使用jclasslib插件查看字节码
python怎么用xlsxwriter模块处理excel文件
用户名
密码
记住登录状态 忘记密码?
邮箱
确认密码
我已阅读并同意 用户协议