在C#中,ManualResetEvent 是一个同步基元,允许一个线程通知另一个线程,某个事件已经发生。主要有以下几个方法:
- ManualResetEvent 构造函数:初始化一个 ManualResetEvent 实例,可以指定初始状态。
ManualResetEvent resetEvent = new ManualResetEvent(false); // 初始化为未终止状态
- Set() 方法:将 ManualResetEvent 设置为终止状态,允许等待线程继续执行。
resetEvent.Set();
- Reset() 方法:将 ManualResetEvent 设置为非终止状态,阻止等待线程继续执行。
resetEvent.Reset();
- WaitOne() 方法:阻止当前线程,直到收到信号为止。
resetEvent.WaitOne();
- WaitOne(timeout) 方法:阻止当前线程,直到收到信号或超时为止。
resetEvent.WaitOne(1000); // 等待1秒钟
使用 ManualResetEvent 可以很方便地实现线程同步和通信,例如在多线程环境中协调线程的执行顺序。