1、AutoResetEvent 与 ManualResetEvent
AutoResetEvent | ManualResetEvent |
---|
自动重置事件 | 手动重置事件 |
自动重置 | 需要手动重置 |
一般用于一个线程 | 可以同时控制多个线程 |
2、创建与设置
private ManualResetEvent manualResetEvent = new ManualResetEvent(false);
manualResetEvent.WaitOne();
manualResetEvent.Set();
manualResetEvent.Reset();
3、主要代码
private ManualResetEvent manualResetEvent = new ManualResetEvent(false);
public override void StartRun()
{
manualResetEvent.Reset();
IsRun = true;
Thread th = new Thread(this.ThreadRun);
th.Start();
}
public override void StopRun()
{
IsRun = false;
manualResetEvent.Set();
}
private void OnReceiveData()
{
manualResetEvent.Set();
}
private void ThreadRun()
{
while (true)
{
manualResetEvent.WaitOne();
if (IsRun == false)
break;
manualResetEvent.Reset();
}
}