我有一個工作線程中的對象,我可以指示停止運行。我可以實現這個用布爾或的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