Microsoft.Common.Core.Threading.AsyncManualResetEvent.WaitAsync C# (CSharp) Method

WaitAsync() public method

public WaitAsync ( CancellationToken cancellationToken = default(CancellationToken) ) : Task
cancellationToken System.Threading.CancellationToken
return Task
        public Task WaitAsync(CancellationToken cancellationToken = default(CancellationToken)) {
            if (!cancellationToken.CanBeCanceled) {
                return _tcs.Task;
            }

            if (cancellationToken.IsCancellationRequested) {
                return Task.FromCanceled(cancellationToken);
            }

            var tcs = new TaskCompletionSource<bool>();
            cancellationToken.Register(CancelTcs, tcs);
            _tcs.Task.ContinueWith(WaitContinuation, tcs, TaskContinuationOptions.ExecuteSynchronously);
            return tcs.Task;
        }

Usage Example

コード例 #1
0
        public async Task WaitAsync_CancellationToken_Cancel() {
            var amre = new AsyncManualResetEvent();
            var cts = new CancellationTokenSource();

            var task = amre.WaitAsync(cts.Token);
            task.Should().NotBeCompleted();

            cts.Cancel();
            await Task.Delay(10);

            task.Should().BeCanceled();
        }
All Usage Examples Of Microsoft.Common.Core.Threading.AsyncManualResetEvent::WaitAsync