private async TT.Task UpdateLoop(IT.TaskScheduler scheduler) { _isAlive = true; while (_isAlive) { try { scheduler.Update(); var delayMilliseconds = scheduler.IsActive ? 5 : 50; await TT.Task.Delay(delayMilliseconds).ConfigureAwait(false); // ↑Delay なし、専用スレッドで回りっぱなしとかがいいかもしれないし。 } catch (Exception ex) { HasError = true; OnError(ex); } } }
private async TT.Task UpdateLoop(IT.TaskScheduler scheduler) { while (!_cts.IsCancellationRequested) { try { var delayMilliseconds = scheduler.IsActive ? 5 : 50; try { await TT.Task.Delay(delayMilliseconds, _cts.Token).ConfigureAwait(false); } catch (TT.TaskCanceledException) { } // ↑Delay なし、専用スレッドで回りっぱなしとかがいいかもしれないし。 scheduler.Update(); } catch (Exception ex) { HasError = true; OnError(ex); } } }