From c79f534751937bf64cc919bf045688f12a6e10d5 Mon Sep 17 00:00:00 2001 From: ClemensF Date: Fri, 25 Sep 2020 16:14:52 +0200 Subject: [PATCH] Update TileImageLoader.cs --- MapControl/Shared/TileImageLoader.cs | 34 +++++++++++++--------------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/MapControl/Shared/TileImageLoader.cs b/MapControl/Shared/TileImageLoader.cs index 1f9314a6..39016300 100644 --- a/MapControl/Shared/TileImageLoader.cs +++ b/MapControl/Shared/TileImageLoader.cs @@ -83,32 +83,30 @@ namespace MapControl tileQueue.Enqueue(tiles); - var newTasks = Math.Min(tileQueue.Count, MaxLoadTasks) - taskCount; + var numTasks = Math.Min(tileQueue.Count, MaxLoadTasks); + var tasks = Enumerable.Range(0, numTasks).Select(n => LoadTilesFromQueueAsync()); - if (newTasks > 0) - { - Interlocked.Add(ref taskCount, newTasks); - - var tasks = Enumerable.Range(0, newTasks).Select(n => LoadTilesFromQueueAsync()); - - await Task.WhenAll(tasks).ConfigureAwait(false); - } + await Task.WhenAll(tasks).ConfigureAwait(false); } } private async Task LoadTilesFromQueueAsync() { - while (tileQueue.TryDequeue(out Tile tile)) + if (Interlocked.Increment(ref taskCount) <= MaxLoadTasks) { - tile.Pending = false; + while (tileQueue.TryDequeue(out Tile tile)) + { + tile.Pending = false; - try - { - await loadTileImage(tile).ConfigureAwait(false); - } - catch (Exception ex) - { - Debug.WriteLine("TileImageLoader: {0}/{1}/{2}: {3}", tile.ZoomLevel, tile.XIndex, tile.Y, ex.Message); + try + { + Debug.WriteLine(Thread.CurrentThread.ManagedThreadId); + await loadTileImage(tile).ConfigureAwait(false); + } + catch (Exception ex) + { + Debug.WriteLine("TileImageLoader: {0}/{1}/{2}: {3}", tile.ZoomLevel, tile.XIndex, tile.Y, ex.Message); + } } }