public ActionLongRunningTask(Action work, TaskScheduling scheduling = null, TimeSpan?stopTimeout = null /*Infinite*/)
     : base(scheduling, stopTimeout)
 {
     if (work is null)
     {
         throw new ArgumentNullException(nameof(work));
     }
     _work = (_) => work();
 }
 public ActionLongRunningTask(Action <CancellationToken> work, TaskScheduling scheduling = null, TimeSpan?stopTimeout = null /*Infinite*/)
     : base(scheduling, stopTimeout)
 {
     _work = work ?? throw new ArgumentNullException(nameof(work));
 }
 protected LongRunningTask(TaskScheduling scheduling = null /*SingleRunTaskScheduling*/, TimeSpan?stopTimeout = null /*Infinite*/)
 {
     Scheduling   = scheduling ?? new SingleRunTaskScheduling();
     _stopTimeout = stopTimeout ?? TimeSpanConstants.Infinite;
 }