diff --git a/MapControl/Shared/GroundOverlay.cs b/MapControl/Shared/GroundOverlay.cs index fb22d0d0..0b6bfdb5 100644 --- a/MapControl/Shared/GroundOverlay.cs +++ b/MapControl/Shared/GroundOverlay.cs @@ -162,22 +162,24 @@ namespace MapControl { var imageOverlays = ReadImageOverlays(document); - var semaphore = new SemaphoreSlim(MaxLoadTasks); - - var tasks = imageOverlays.Select(async imageOverlay => + using (var semaphore = new SemaphoreSlim(MaxLoadTasks)) { - await semaphore.WaitAsync(); - try - { - await loadFunc(imageOverlay); // no more than MaxLoadTasks parallel executions here - } - finally - { - semaphore.Release(); - } - }); + var tasks = imageOverlays.Select( + async imageOverlay => + { + await semaphore.WaitAsync(); + try + { + await loadFunc(imageOverlay); // no more than MaxLoadTasks parallel executions here + } + finally + { + semaphore.Release(); + } + }); - await Task.WhenAll(tasks); + await Task.WhenAll(tasks); + } return imageOverlays; }