diff --git a/src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs b/src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs index 7e10a4a8da86..9720baff993b 100644 --- a/src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs +++ b/src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs @@ -743,7 +743,7 @@ async Task ReadChannelStream() } } - return CommonStreaming(connectionState, streamId, ReadChannelStream); + return CommonStreaming(connectionState, streamId, ReadChannelStream, tokenSource); } // this is called via reflection using the `_sendIAsyncStreamItemsMethod` field @@ -760,11 +760,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