我在工作线程中有一个对象,我可以指示它停止运行。我可以使用 bool 或 AutoResetEvent 来实现它:
布尔值:
private volatile bool _isRunning;
public void Run() {
while (_isRunning)
{
doWork();
Thread.Sleep(1000);
}
}
自动复位事件:
private AutoResetEvent _stop;
public void Run() {
do {
doWork();
} while (!_stop.WaitOne(1000));
}
然后该Stop()
方法将设置_isRunning
为 false,或调用_stop.Set()
.
除此之外,使用 AutoResetEvent 的解决方案可能会停止得更快一些,这些方法之间有什么区别吗?这个比那个好吗?