public SyncAction(OperationQueue operationQueue, IMobileServiceLocalStore store, CancellationToken cancellationToken) { this.OperationQueue = operationQueue; this.Store = store; this.TaskSource = new TaskCompletionSource <object>(); this.CancellationToken = cancellationToken; cancellationToken.Register(() => TaskSource.TrySetCanceled()); }
protected override Task Close() { _lifetime.TrySetCanceled(); return(base.Close()); }
private void CancelTask() { Log.Debug($"Propagating cancellation request to task {TaskSource.Task.Id}."); TaskSource.TrySetCanceled(); }
protected override Task Close() { _taskSource.TrySetCanceled(); return(base.Close()); }
public static bool TrySetFromTask <T>(this TaskSource <T> target, Task <T> source, CancellationToken candidateToken) => source.IsCanceled ? target.TrySetCanceled(candidateToken.IsCancellationRequested ? candidateToken : CancellationToken.None) : source.Exception != null ? target.TrySetException(source.Exception) : target.TrySetResult(source.Result);