public void FromTask_ReturnsTokenWithoutCancellationRequested() { var tcs = new TaskCompletionSource(); var result = CancellationTokenHelpers.FromTask(tcs.Task); Assert.IsTrue(result.Token.CanBeCanceled); Assert.IsFalse(result.Token.IsCancellationRequested); }
public void FromTaskSynchronously_TaskCompletes_TokenGetsCancellationRequested() { var tcs = new TaskCompletionSource(); var result = CancellationTokenHelpers.FromTask(tcs.Task, TaskContinuationOptions.ExecuteSynchronously); tcs.SetResult(); Assert.IsTrue(result.Token.CanBeCanceled); Assert.IsTrue(result.Token.IsCancellationRequested); }
/// <summary> /// [Caution] As per the AsyncEx notes, this is a hack, and neither thread-safe nor truly immediate. /// </summary> public static bool IsSet(this AsyncManualResetEvent source) { try { source.Wait(CancellationTokenHelpers.FromTask(Task.Delay(5)).Token); return(true); } catch (System.OperationCanceledException) { return(false); } }