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(); }
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(); }