Ejemplo n.º 1
0
        public async Task ReadCanBeCanceledViaCancelPendingReadWhenReadIsAsync()
        {
            var        stream = new CancelledReadsStream();
            PipeReader reader = new MessagePipeReader(PipeReader.Create(stream), new TestProtocol());

            var task = reader.ReadAsync();

            reader.CancelPendingRead();

            stream.WaitForReadTask.TrySetResult(null);

            var readResult = await task;

            Assert.True(readResult.IsCanceled);
            reader.Complete();
        }
Ejemplo n.º 2
0
        public async Task ReadCanBeCancelledViaProvidedCancellationToken()
        {
            var        stream = new CancelledReadsStream();
            PipeReader reader = new MessagePipeReader(PipeReader.Create(stream), new TestProtocol());
            var        cts    = new CancellationTokenSource();

            var task = reader.ReadAsync(cts.Token);

            Assert.False(task.IsCompleted);

            cts.Cancel();

            stream.WaitForReadTask.TrySetResult(null);

            await Assert.ThrowsAsync <OperationCanceledException>(async() => await task);

            reader.Complete();
        }