Exemplo n.º 1
0
        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));
        }