惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
雷峰网
雷峰网
Last Week in AI
Last Week in AI
T
Tailwind CSS Blog
V
Visual Studio Blog
Jina AI
Jina AI
博客园 - 司徒正美
The Cloudflare Blog
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
S
SegmentFault 最新的问题
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
小众软件
小众软件
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
美团技术团队
博客园 - 【当耐特】
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
WordPress大学
WordPress大学
爱范儿
爱范儿
月光博客
月光博客
大猫的无限游戏
大猫的无限游戏

博客园 - 李阳

Sqoop执行mysql删除语句 Java采用JDBC的方式连接Hive(SparkSQL) ubuntu 升级内核 Ubuntu 13.04设置root用户登录图形界面 ubuntu make menuconfig error Oracle创建用户和表空间脚本 GPL & BSD 许可证 - 李阳 调用WindowsAPI显示帮助提示 SQLServer 存储过程简介与使用方法 SQLServer 游标简介与使用说明 SQLServer 表值函数与标量值函数 定义方式与调用区别 使用Graphics画图的小技巧 灵活使用多线程编程——AutoResetEvent类 [提问] 关于C#自定义控件的问题(请高手帮忙解决) Access数据库连接池问题 软件版本号的详解 安全的ACCESS加密方法 Oracle Hint的用法 Oracle存储过程编写经验和优化措施
灵活使用多线程编程——EventWaitHandle类
李阳 · 2009-03-04 · via 博客园 - 李阳

EventWaitHandle类

     表示一个线程同步事件。该类存在于mscorlib.DLL中。

     EventWaitHandle类允许线程通过发信号的方式互相通信。 通常,一个或多个线程在EventWaitHandle上被阻止,直到一个未阻止的线程通过调用Set()方法,来释放一个或多个被阻止的线程。线程可以通过调用SignalAndWait()方法(该方法为静态函数)以原子操作的方式,向EventWaitHandle发出信号,然后在它上面阻止。

     以终止的EventWaitHandle的行为取决于它的重置模式,在释放单个等待线程后,用EventResetMode.AutoReset标志创建的EventWaitHandle在终止时会自动地重置,用EventResetMode.ManualReset标志创建的EventWaitHandle一直保持终止状态,直到它的Reset函数被调用。

     自动重置时间提供对资源的独占访问,如果没有线程等待时,自动重置事件处于终止状态。则该事件一直保持终止状态,直到某个线程尝试在该事件上等待,该事件释放线程,并立即重置,以阻止后面的线程。

     手动重置事件类似于入口,当事件不处于终止状态时,在该事件上等待的线程则被阻止,当事件处于终止状态时,所有等待的线程均被释放,而事件一直保持终止状态(即后边的线程不阻止),直到它的Reset方法被调用,如果一个线程必须完成某项活动时,其他线程才能继续执行,则使用手动重置事件。

     EventWaitHandle对象可以与其静态函数:WaitAll和WaitAny方法一起使用。

 MSDN示例:

Code