From 16611c4ba4d94688d90ed4abaad25cff26bcb70f Mon Sep 17 00:00:00 2001 From: Billy Richardson Date: Thu, 12 Sep 2024 13:26:20 -0700 Subject: [PATCH] Fix missing `using` --- src/Task/Polyfills/ListExtensions.cs | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/Task/Polyfills/ListExtensions.cs b/src/Task/Polyfills/ListExtensions.cs index 61a102f..c97b6ad 100644 --- a/src/Task/Polyfills/ListExtensions.cs +++ b/src/Task/Polyfills/ListExtensions.cs @@ -51,22 +51,23 @@ public static async Task ForEachAsync( if (body == null) throw new ArgumentNullException(nameof(body)); if (degreeOfParallelism < 1) throw new ArgumentOutOfRangeException(nameof(degreeOfParallelism), "Degree of parallelism must be at least 1."); - var semaphore = new SemaphoreSlim(degreeOfParallelism); - - var tasks = source.Select(async item => + using (var semaphore = new SemaphoreSlim(degreeOfParallelism)) { - await semaphore.WaitAsync(); - try - { - await body(item); - } - finally + var tasks = source.Select(async item => { - semaphore.Release(); - } - }); + await semaphore.WaitAsync().ConfigureAwait(false); + try + { + await body(item).ConfigureAwait(false); + } + finally + { + semaphore.Release(); + } + }); - await Task.WhenAll(tasks); + await Task.WhenAll(tasks).ConfigureAwait(false); + } } } }