private void OnError(Exception ex, IT.TaskScheduler scheduler) { var d = Error; if (d != null) { d(this, new ErrorHandlerAgs(ex, scheduler)); } }
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); } } }
public ErrorHandlerAgs(Exception error, IT.TaskScheduler scheduler) { Error = error; Scheduler = scheduler; }
public void Remove(IT.TaskScheduler s) { _schedulers = _schedulers.Remove(s); }
public void Add(IT.TaskScheduler s) { _schedulers = _schedulers.Add(s); }
public TaskRunner(IT.TaskScheduler scheduler) { Scheduler = scheduler; _task = UpdateLoop(scheduler); }
internal ErrorHandlerAgs(Exception error, IT.TaskScheduler scheduler) { Error = error; Scheduler = scheduler; }