简单的说三个的关系是,AutoResetEvent和ManualResetEvent是EventWaitHandle的子类。从EventWaitHandle可以创建两者。
m_WaitHandle = new EventWaitHandle(false, EventResetMode.AutoReset); // 类似AutoResetEvent
m_WaitHandle = new EventWaitHandle(false, EventResetMode.ManualReset);// 类似ManualResetEvent
项目 | 区别 |
EventWaitHandle | 是下面两种的基类 |
AutoResetEvent | Set的时候会自动调用Reset,并且Set之后一个调用WaiOne的地方有效,Reset的时候会随机的阻塞 |
ManualResetEvent | Set后会把所有调用WaitOne的地方释放阻塞,需要手动Reset |