ManualResetEvent和AutoResetEvent在C#中用法比较类似,都是用来做线程控制的,这个从他们的名字
也可以看出。
先说相似点,他们都有对象方法:Set、Reset、WaitOne,用法类似,其中:
Set表示设置为有信号状态,这时调用WaitOne的线程将继续执行;
Reset表示设置为无信号状态,这时调用WaitOne的线程将阻塞;
WaitOne表示在无信号状态时阻塞当前线程,也就是说WaitOne只有在无信号状态下才会阻塞线程。
再说说不同点,
“Manual”表示手动的,“Auto”表示自动的,那么这个手动和自动的具体含义是什么呢?请看下面的例子:
public class ResetEventTest
{
public void Test()
{
Thread t1 = new Thread(new ThreadStart(thread1));
Thread t2 = new Thread(new ThreadStart(thread2));
t1.Start();
t2.Start();
Thread.Sleep(1000); //让执行过程停止1秒
_manualResetEven

本文介绍了C#中用于线程控制的ManualResetEvent和AutoResetEvent,两者都有Set、Reset和WaitOne方法。Set表示设置为有信号状态,允许线程继续;Reset设置为无信号状态,阻止线程执行。 ManualResetEvent在释放信号后不会自动重置,而AutoResetEvent在释放后会自动重置,仅允许一个等待线程通过。通过示例代码展示了两者的区别和使用场景。
最低0.47元/天 解锁文章
2600

被折叠的 条评论
为什么被折叠?



