ManualResetEvent的作用是什么
ManualResetEvent的作用是什么?这篇文章运用了实例展示ManualResetEvent的使用方法和应用场景,感兴趣的小伙伴们可以参考借鉴,希望对大家有所帮助。
创新互联公司是一家集网站建设,汤阴企业网站建设,汤阴品牌网站建设,网站定制,汤阴网站建设报价,网络营销,网络优化,汤阴网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
- ManualResetEvent详解
ManualResetEvent 允许线程通过发信号互相通信。通常,此通信涉及一个线程在其他线程进行之前必须完成的任务。当一个线程开始一个活动(此活动必须完成后,其他线程才能开始)时,它调用 Reset 以将 ManualResetEvent 置于非终止状态,此线程可被视为控制 ManualResetEvent。调用 ManualResetEvent 上的 WaitOne 的线程将阻止,并等待信号。当控制线程完成活动时,它调用 Set 以发出等待线程可以继续进行的信号。并释放所有等待线程。一旦它被终止,ManualResetEvent 将保持终止状态(即对 WaitOne 的调用的线程将立即返回,并不阻塞),直到它被手动重置。可以通过将布尔值传递给构造函数来控制 ManualResetEvent 的初始状态,如果初始状态处于终止状态,为 true;否则为 false。
代码在同级目录中有,这里就不贴出来了。
图1
从下图中可以看出,实例化ManualResetEvent对象时,传的是true,则将初始状态设置为终止。程序首次运行,两个线程都在持续运行,如图3所示
图2
图3
输入reset命令,执行Reset方法,将事件状态设置为非终止状态,导致线程阻止。所以两个线程方法都停止运行了
输入set命令,执行Set方法,将事件状态设置为终止状态,允许一个或多个等待线程继续,所以2个线程又都开始运行了。
![]
结论:WaitOne方法在这里很关键,阻止当前线程,直到当前 System.Threading.WaitHandle 收到信号。ManualResetEvent对象可以作为一个全局变量,多个线程可以访问它,如果ManualResetEvent对象实例化传的是true时,或者ManualResetEvent对象被执行Set方法时,写了.WaitOne的线程方法将继续执行;如果ManualResetEvent对象被执行Reset方法时,写了.WaitOne的线程方法将停止执行,一直等待,知道被执行了Set方法为止。
验证:如下图所示,注释了WaitOne方法,即使执行了Reset方法,由于没有WaitOne的控制,这两个线程一样的在运行。
看完上述内容,你们对ManualResetEvent的作用有进一步的了解吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
网页标题:ManualResetEvent的作用是什么
文章源于:http://myzitong.com/article/jogggi.html