3 using System.Threading.Tasks;
29 throw new ArgumentNullException(nameof(job));
30 cancellationTokenSource =
new CancellationTokenSource();
31 task = job(cancellationTokenSource.Token);
35 public void Dispose() => cancellationTokenSource.Dispose();
40 public int? Progress {
get;
set; }
47 public async Task
Wait(CancellationToken cancellationToken)
49 TaskCompletionSource<object> tcs =
new TaskCompletionSource<object>();
50 using (cancellationToken.Register(() => tcs.SetCanceled()))
51 await Task.WhenAny(tcs.Task, task).ConfigureAwait(
false);
52 cancellationToken.ThrowIfCancellationRequested();
58 public void Cancel() => cancellationTokenSource.Cancel();
Use server authentication
readonly Task task
The Task being run
readonly CancellationTokenSource cancellationTokenSource
The CancellationTokenSource for task
Class for pairing Tasks with CancellationTokenSources
JobHandler(Func< CancellationToken, Task > job)
Construct a JobHandler
async Task Wait(CancellationToken cancellationToken)
Wait for task to complete