Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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);
        }