public Task Run(Func <CancellationToken, Task> asyncAction, CancellationTokenSource cancellationTokenSource) { if (!ReferenceEquals(Cancel, cancellationTokenSource)) { cancellationTokenSource = CancellationTokenSource.CreateLinkedTokenSource(cancellationTokenSource.Token, Cancel.Token); } var t = TaskV2.Run(async() => { ThrowIfCancellationRequested(cancellationTokenSource); await asyncAction(cancellationTokenSource.Token); ThrowIfCancellationRequested(cancellationTokenSource); }, cancellationTokenSource, Scheduler); return(AddToManagedTasks(t)); }
public async Task <T> Run <T>(Func <CancellationToken, Task <T> > asyncFunction, CancellationTokenSource cancellationTokenSource) { if (!ReferenceEquals(Cancel, cancellationTokenSource)) { cancellationTokenSource = CancellationTokenSource.CreateLinkedTokenSource(cancellationTokenSource.Token, Cancel.Token); } Task <T> t = TaskV2.Run(async() => { ThrowIfCancellationRequested(cancellationTokenSource); T result = await asyncFunction(cancellationTokenSource.Token); ThrowIfCancellationRequested(cancellationTokenSource); return(result); }, cancellationTokenSource, Scheduler); await AddToManagedTasks(t); return(await t); }