diff --git a/MapControl/Shared/TileImageLoader.cs b/MapControl/Shared/TileImageLoader.cs index 8965c7c6..24d63a3a 100644 --- a/MapControl/Shared/TileImageLoader.cs +++ b/MapControl/Shared/TileImageLoader.cs @@ -71,6 +71,7 @@ namespace MapControl public static int MaxLoadTasks { get; set; } = 4; private readonly Queue tileQueue = new Queue(); + private int tileCount; private int taskCount; /// @@ -93,7 +94,8 @@ namespace MapControl tileQueue.Enqueue(tile); } - var tileCount = tileQueue.Count; + tileCount = tileQueue.Count; + var maxTasks = Math.Min(tileCount, MaxLoadTasks); while (taskCount < maxTasks) @@ -101,7 +103,7 @@ namespace MapControl taskCount++; Logger?.LogDebug("Task count: {count}", taskCount); - _ = Task.Run(async () => await LoadTilesFromStack(tileSource, cacheName, tileCount, progress).ConfigureAwait(false)); + _ = Task.Run(async () => await LoadTilesFromStack(tileSource, cacheName, progress).ConfigureAwait(false)); } } } @@ -111,10 +113,11 @@ namespace MapControl lock (tileQueue) { tileQueue.Clear(); + tileCount = 0; } } - private async Task LoadTilesFromStack(TileSource tileSource, string cacheName, int tileCount, IProgress progress) + private async Task LoadTilesFromStack(TileSource tileSource, string cacheName, IProgress progress) { while (true) {