diff --git a/src/System.IO.Pipelines/tests/FlushAsyncCancellationTests.cs b/src/System.IO.Pipelines/tests/FlushAsyncCancellationTests.cs index 7894e13c7969..3c8af3289081 100644 --- a/src/System.IO.Pipelines/tests/FlushAsyncCancellationTests.cs +++ b/src/System.IO.Pipelines/tests/FlushAsyncCancellationTests.cs @@ -373,19 +373,20 @@ public void ReadAsyncCompletesIfFlushAsyncCanceledMidFlush() var readTask = Pipe.Reader.ReadAsync(); // Signal writer to initiate a flush - if (!readTask.IsCompleted) + if (!readTask.IsCompleted || readTask.Result.IsCompleted) { resetEvent.Set(); } var result = await readTask; - resetEvent.Reset(); if (result.Buffer.IsEmpty) { return; } + resetEvent.Reset(); + Pipe.Reader.AdvanceTo(result.Buffer.End); } }); @@ -394,6 +395,7 @@ public void ReadAsyncCompletesIfFlushAsyncCanceledMidFlush() { while (!writer.IsCompleted) { + resetEvent.WaitOne(); cancellationTokenSource.Cancel(); } });