protected virtual void OnPreempted() { if (ShouldPreempt != null) { _logger.Debug(LogTag, "Received preempt message."); ShouldPreempt(this, null); } }
public void Start() { _tokenSource = new CancellationTokenSource(); var cancellationToken = _tokenSource.Token; var task = new Task(() => Execute(cancellationToken), cancellationToken, TaskCreationOptions.LongRunning); ConfigureTaskForErrors(task, OnError, cancellationToken); _tasks.Add(task); task.Start(TaskScheduler.Current); if (_preempter != null) { StartPreempter(cancellationToken); } _logger.Debug(LogTag, "Started."); OnStarted(); }