我倾向于在很多不同的地方使用以下模式来实现倒计时通知事件的定时延迟,以及取消的能力:
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));
}
我想做的是将这种模式抽象到它自己的系统中,我可以用它来阻塞任何特定的线程,直到达到倒计时。是否有某种最佳实践?它必须提供细粒度的状态反馈(最好我可以告诉它每秒、十分之一秒等通知我),并且它必须支持取消(最好比每秒有更好的响应)。我觉得我应该使用CountdownEvent
.NET 4.0 中的新功能,或者可能使用 aMonitor
而不是仅仅睡觉,但我希望在这里有一些更好的见解。