私は、カウントダウン通知イベントとキャンセル機能を備えた時間制限のために、次のパターンをさまざまな場所で使用する傾向があります。
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));
}
私がやりたいのは、このパターンを独自のシステムに抽象化して、カウントダウンに達するまで特定のスレッドをブロックするために使用できるようにすることです。これには、ある種のベストプラクティスがありますか?きめ細かいステータスフィードバックを提供する必要があり(できれば、毎秒、10分の1秒などに通知するように指示できます)、キャンセルをサポートする必要があります(できれば、毎秒よりも応答が良い)。CountdownEvent
.NET 4.0の新機能を使用するかMonitor
、単に寝る代わりに使用する必要があると思いますが、ここでより良い洞察を期待しています。