終わりのないタスクを実装するための適切な方法。(タイマーvsタスク)
そのため、私のアプリは、アプリが実行されているか、キャンセルが要求されている限り、ほぼ連続的に(実行ごとに10秒程度の休止を置いて)アクションを実行する必要があります。必要な作業には、最大30秒かかる可能性があります。 System.Timers.Timerを使用し、AutoResetを使用して、前の「ティック」が完了する前にアクションが実行されないようにすることをお勧めします。 または、キャンセルトークンを使用してLongRunningモードで一般的なタスクを使用し、呼び出しの間に10秒間のThread.Sleepを使用してアクションを実行するアクションを呼び出す通常の無限whileループを含める必要がありますか?非同期/待機モデルについては、作業からの戻り値がないため、ここが適切かどうかはわかりません。 CancellationTokenSource wtoken; Task task; void StopWork() { wtoken.Cancel(); try { task.Wait(); } catch(AggregateException) { } } void StartWork() { wtoken = new CancellationTokenSource(); task = Task.Factory.StartNew(() => { while (true) { wtoken.Token.ThrowIfCancellationRequested(); DoWork(); Thread.Sleep(10000); } }, wtoken, TaskCreationOptions.LongRunning); } void DoWork() { // Some work that takes …