2
我傾向於使用下面的模式有很多不同的地方用倒計時通知事件發生時間延遲,並有能力取消:最佳實踐與倒計時通知線程延遲
CancellationToken ctoken = new CancellationToken();
for (int i = 0; i < 10; i++)
{
if (ctoken.IsCancellationRequested) break;
Thread.Sleep(1000);
if (ctoken.IsCancellationRequested) break;
if (Status != null) Status(this, new StatusEventArgs(i));
}
我想do是將這個模式抽象到它自己的系統中,我可以使用它來阻止任何特定的線程,直到達到倒計時。有這種最佳做法嗎?它必須提供詳細的狀態反饋(最好我可以告訴它每秒鐘通知我,十分之一秒等),並且它必須支持取消(最好有比每秒更好的響應)。我覺得我應該在.NET 4.0中使用新的CountdownEvent
功能,或者使用Monitor
而不是隻是睡覺,但我希望在這裏有更好的見解。
這看起來非常接近我的設想。但是,我沒有看到WaitOne和TimeSpan需要重載的'WaitOne'。這應該是'token.WaitHandle.WaitOne(TimeSpan.FromSeconds(10));'? – drharris
'token.WaitHandle.WaitOne()'是正確的路要走。感謝這個建議;它確實有助於清理事情,而且它的性能似乎更好! – drharris
@drharris:感謝您指出錯誤。我已更正了代碼。 –