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

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
S
SegmentFault 最新的问题
大猫的无限游戏
大猫的无限游戏
The GitHub Blog
The GitHub Blog
M
MIT News - Artificial intelligence
T
Tailwind CSS Blog
aimingoo的专栏
aimingoo的专栏
Last Week in AI
Last Week in AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
H
Help Net Security
Engineering at Meta
Engineering at Meta
Microsoft Security Blog
Microsoft Security Blog
阮一峰的网络日志
阮一峰的网络日志
J
Java Code Geeks
T
The Blog of Author Tim Ferriss
Hugging Face - Blog
Hugging Face - Blog
C
Check Point Blog
F
Fortinet All Blogs
腾讯CDC
博客园 - Franky
WordPress大学
WordPress大学
U
Unit 42

博客园 - 李阳

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

AutoResetEvent类

     该类的作用是通知正在等待的线程已发生的事件。该类存在于mscorlib.DLL中。

     在.Net Framework 2.0中,该类是继承自EventWaitHalder,AutoResetEvent在功效上等同于EventResetModel.AutoReset创建的EventWaitHandle。下面我们反编译该类的代码,下边为该类得构造函数的代码:

Code

AutoResetEvent是允许线程通过发信号进行互相通信访问的。通常,此类通信涉及线程需要独占访问资源。

线程通过调用AutoResetEvent上的WaitOne来等待信号,如果AutoResetEvent处于非终止状态的话,则该线程阻塞,并且等待当前控制资源的线程通过调用Set发出资源可用信号。

调用Set向AutoResetEvent发出信号以释放等待的线程,AutoResetEvent将处于终止状态,直到一个等待的线程释放,然后自动返回非终止状态,如果没有任何线程在等待,则该信号无限期的保持在终止状态。

可以通过将一个Bool值传给AutoResetEvent的构造函数,用于设置是否为非终止状态。如果传入的为TRUE,则初始状态为终止状态,否则为FALSE。

下面我们通过一个示例来详细说明该类的用法:

Code

AutoResetEvent中比较有用的函数分别为以下几个:

     1.Set()  将事件的状态位置设置为终止状态,允许一个或多个等待线程继续。

     2.ReSet()将事件的状态设置为非终止状态,阻塞该线程。

     3.WaitOne()阻止当前线程。直到当前WaitHandle收到信号。