public static CancellationTokenRegistration RegisterForCancellation <T>(this TaskCompletionSource <T> taskCompletionSource, int millisecondsDelay, CancellationToken cancellationToken) { if (millisecondsDelay >= 0) { var cts = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); cts.CancelAfter(millisecondsDelay); cancellationToken = cts.Token; } var action = new CancelOnTokenAction <T>(taskCompletionSource, cancellationToken); return(cancellationToken.Register(action.Invoke)); }
public static CancellationTokenRegistration RegisterForCancellation <T>(this TaskCompletionSource <T> taskCompletionSource, CancellationToken cancellationToken) { var action = new CancelOnTokenAction <T>(taskCompletionSource, cancellationToken); return(cancellationToken.Register(action.Invoke)); }