diff --git a/src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs b/src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs index 8b30b4447323..6a87b8894a0d 100644 --- a/src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs +++ b/src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs @@ -777,7 +777,7 @@ async Task ReadChannelStream() } } - return CommonStreaming(connectionState, streamId, ReadChannelStream); + return CommonStreaming(connectionState, streamId, ReadChannelStream, tokenSource); } // this is called via reflection using the `_sendIAsyncStreamItemsMethod` field @@ -794,11 +794,14 @@ async Task ReadAsyncEnumerableStream() } } - return CommonStreaming(connectionState, streamId, ReadAsyncEnumerableStream); + return CommonStreaming(connectionState, streamId, ReadAsyncEnumerableStream, tokenSource); } - private async Task CommonStreaming(ConnectionState connectionState, string streamId, Func createAndConsumeStream) + private async Task CommonStreaming(ConnectionState connectionState, string streamId, Func createAndConsumeStream, CancellationTokenSource cts) { + // make sure we dispose the CTS created by StreamAsyncCore once streaming completes + using var _ = cts; + Log.StartingStream(_logger, streamId); string? responseError = null; try