From f30d3603b251460a0d4e63ad3a5c0a995789184f Mon Sep 17 00:00:00 2001 From: ClemensFischer Date: Tue, 4 Nov 2025 21:51:03 +0100 Subject: [PATCH] Update TileImageLoader.cs --- MapControl/Shared/TileImageLoader.cs | 33 ++++++++++++++++------------ 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/MapControl/Shared/TileImageLoader.cs b/MapControl/Shared/TileImageLoader.cs index 72fbaba7..caf770e8 100644 --- a/MapControl/Shared/TileImageLoader.cs +++ b/MapControl/Shared/TileImageLoader.cs @@ -110,26 +110,29 @@ namespace MapControl } } - private async Task LoadTilesFromQueue(TileSource tileSource, string cacheName, IProgress progress) + private bool TryDequeueTile(out Tile tile) { - while (true) + lock (tileQueue) { - Tile tile; - - lock (tileQueue) + if (tileQueue.TryDequeue(out tile)) { - if (!tileQueue.TryDequeue(out tile)) - { - taskCount--; - Logger?.LogDebug("Task count: {count}", taskCount); - break; - } - - progress?.Report(1d - (double)tileQueue.Count / tileCount); + return true; } + taskCount--; + Logger?.LogDebug("Task count: {count}", taskCount); + return false; + } + } + + private async Task LoadTilesFromQueue(TileSource tileSource, string cacheName, IProgress progress) + { + while (TryDequeueTile(out Tile tile)) + { tile.IsPending = false; - Logger?.LogDebug("Thread {thread,2}: Loading tile ({zoom}/{column}/{row})", Environment.CurrentManagedThreadId, tile.ZoomLevel, tile.Column, tile.Row); + + Logger?.LogDebug("Thread {thread,2}: Loading tile ({zoom}/{column}/{row})", + Environment.CurrentManagedThreadId, tile.ZoomLevel, tile.Column, tile.Row); try { @@ -159,6 +162,8 @@ namespace MapControl { Logger?.LogError(ex, "Failed loading tile {zoom}/{column}/{row}", tile.ZoomLevel, tile.Column, tile.Row); } + + progress?.Report(1d - (double)tileQueue.Count / tileCount); } }