diff --git a/PolyShim.Tests/NetCore30/StreamTests.cs b/PolyShim.Tests/NetCore30/StreamTests.cs new file mode 100644 index 0000000..380bdec --- /dev/null +++ b/PolyShim.Tests/NetCore30/StreamTests.cs @@ -0,0 +1,26 @@ +using System.IO; +using System.Threading.Tasks; +using FluentAssertions; +using Xunit; + +namespace PolyShim.Tests.NetCore30; + +public class StreamTests +{ + [Fact] + public async Task DisposeAsync_Test() + { + // Arrange + var innerStream = new MemoryStream(); + + // Use a buffered stream to ensure DisposeAsync flushes data + var stream = new BufferedStream(innerStream, bufferSize: 4096); + await stream.WriteAsync(new byte[] { 1, 2, 3, 4, 5 }); + + // Act + await stream.DisposeAsync(); + + // Assert + innerStream.ToArray().Should().Equal(1, 2, 3, 4, 5); + } +} diff --git a/PolyShim/NetCore30/Stream.cs b/PolyShim/NetCore30/Stream.cs index 81b1d93..adb68ee 100644 --- a/PolyShim/NetCore30/Stream.cs +++ b/PolyShim/NetCore30/Stream.cs @@ -27,7 +27,14 @@ public async Task DisposeAsync() } #endif - await Task.Run(stream.Dispose); + try + { + await stream.FlushAsync(); + } + finally + { + stream.Dispose(); + } } #endif } diff --git a/PolyShim/NetCore30/TextWriter.cs b/PolyShim/NetCore30/TextWriter.cs index 216aca5..4c91552 100644 --- a/PolyShim/NetCore30/TextWriter.cs +++ b/PolyShim/NetCore30/TextWriter.cs @@ -27,7 +27,14 @@ public async Task DisposeAsync() } #endif - await Task.Run(writer.Dispose); + try + { + await writer.FlushAsync(); + } + finally + { + writer.Dispose(); + } } #endif }