From 5bf0bbcd4277a852be5f6974c7dd5ca4973f7c6b Mon Sep 17 00:00:00 2001 From: Atif Aziz Date: Fri, 19 Jan 2024 18:56:14 +0100 Subject: [PATCH] Fix pending tasks wait loop in (async) "Merge" --- MoreLinq/Experimental/Async/Merge.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/MoreLinq/Experimental/Async/Merge.cs b/MoreLinq/Experimental/Async/Merge.cs index 72c9a459c..f414eaa7d 100644 --- a/MoreLinq/Experimental/Async/Merge.cs +++ b/MoreLinq/Experimental/Async/Merge.cs @@ -201,13 +201,14 @@ async IAsyncEnumerable Async([EnumeratorCancellation]CancellationToken cancel // is in some defined state before disposing it otherwise it could throw // "NotSupportedException". - if (pendingTaskList is { Count: > 0 }) + if (pendingTaskList is { Count: > 0 } somePendingTaskList) { - while (await Task.WhenAny(pendingTaskList) - .ConfigureAwait(false) is { } completedTask) + do { - _ = pendingTaskList.Remove(completedTask); + var completedTask = await Task.WhenAny(somePendingTaskList).ConfigureAwait(false); + _ = somePendingTaskList.Remove(completedTask); } + while (somePendingTaskList.Count > 0); } foreach (var enumerator in enumeratorList)