我有一个工作线程中的对象,我可以指示停止运行。我可以实现这个用布尔或的AutoResetEvent:AutoResetEvent与布尔值来停止线程
布尔:
private volatile bool _isRunning;
public void Run() {
while (_isRunning)
{
doWork();
Thread.Sleep(1000);
}
}
的AutoResetEvent:
private AutoResetEvent _stop;
public void Run() {
do {
doWork();
} while (!_stop.WaitOne(1000));
}
然后Stop()
方法将设置_isRunning
为false,或致电_stop.Set()
。
除此之外,AutoResetEvent的解决方案可能会稍微停止一点,这些方法之间有什么区别吗?这个比那个好吗?
我会使用一个计时器,而不是睡觉。要结束它,你可以停止计时器。 – Servy 2012-08-14 13:29:21
我已经添加了一些观察到可能的答案,基本上我不认为这些片段做你想要的。 – Jodrell 2012-08-14 14:20:34