起動時にタスクを開始する Windows サービスがあります
このタスクには while ループがあり、1 回の反復を実行した後、5 分間スリープ状態になります。
サービスを停止すると、最初にタスクがキャンセルされ、後で他の操作が実行されます
タスクがスリープ状態の場合、それが起きたときにのみキャンセルされます。スリープ状態であってもキャンセルして、起きるのを待ちたくありません。
以下はコードです
Task controllerTask = Task.Factory.StartNew(() =>
{
var interval = 300;
while(true)
{
if (cancellationToken.IsCancellationRequested)
break;
Thread.Sleep(interval * 1000);
if (cancellationToken.IsCancellationRequested)
break;
//SOME WORK HERE
}
}, cancellationToken);
何か方法はありますか?
編集: Task.Delay を使用できません。4.5 ではなく .Net Framework 4.0 を使用しているため、 System.Threading.Tasks.Task namespace で見つけることができません。
4.0 で動作する他のより良いソリューションはありますか。