From eade7c4dad2bddc3f3b44dc9254176bb3200ff52 Mon Sep 17 00:00:00 2001 From: Clemens Date: Sun, 28 Nov 2021 23:50:22 +0100 Subject: [PATCH] Update TileImageLoader.cs --- MapControl/Shared/TileImageLoader.cs | 64 ++++++++++++++-------------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/MapControl/Shared/TileImageLoader.cs b/MapControl/Shared/TileImageLoader.cs index 25b6b2f5..dd2f7212 100644 --- a/MapControl/Shared/TileImageLoader.cs +++ b/MapControl/Shared/TileImageLoader.cs @@ -53,29 +53,27 @@ namespace MapControl TileSource = tileSource; - if (tileSource == null) + if (tileSource != null) { - return Task.CompletedTask; + pendingTiles = new ConcurrentStack(tiles.Where(tile => tile.Pending).Reverse()); + + var numTasks = Math.Min(pendingTiles.Count, MaxLoadTasks); + + if (numTasks > 0) + { + if (Cache == null || tileSource.UriFormat == null || !tileSource.UriFormat.StartsWith("http")) + { + cacheName = null; // no tile caching + } + + var tasks = Enumerable.Range(0, numTasks) + .Select(_ => Task.Run(() => LoadPendingTiles(pendingTiles, tileSource, cacheName))); + + return Task.WhenAll(tasks); + } } - pendingTiles = new ConcurrentStack(tiles.Where(tile => tile.Pending).Reverse()); - - var numTasks = Math.Min(pendingTiles.Count, MaxLoadTasks); - - if (numTasks < 1) - { - return Task.CompletedTask; - } - - if (Cache == null || tileSource.UriFormat == null || !tileSource.UriFormat.StartsWith("http")) - { - cacheName = null; // no tile caching - } - - var tasks = Enumerable.Range(0, numTasks) - .Select(_ => Task.Run(() => LoadPendingTiles(pendingTiles, tileSource, cacheName))); - - return Task.WhenAll(tasks); + return Task.CompletedTask; } private static async Task LoadPendingTiles(ConcurrentStack pendingTiles, TileSource tileSource, string cacheName) @@ -104,22 +102,22 @@ namespace MapControl var uri = tileSource.GetUri(tile.XIndex, tile.Y, tile.ZoomLevel); - if (uri == null) + if (uri != null) { - return Task.CompletedTask; + var extension = Path.GetExtension(uri.LocalPath); + + if (string.IsNullOrEmpty(extension) || extension == ".jpeg") + { + extension = ".jpg"; + } + + var cacheKey = string.Format(CultureInfo.InvariantCulture, + "{0}/{1}/{2}/{3}{4}", cacheName, tile.ZoomLevel, tile.XIndex, tile.Y, extension); + + return LoadCachedTile(tile, uri, cacheKey); } - var extension = Path.GetExtension(uri.LocalPath); - - if (string.IsNullOrEmpty(extension) || extension == ".jpeg") - { - extension = ".jpg"; - } - - var cacheKey = string.Format(CultureInfo.InvariantCulture, - "{0}/{1}/{2}/{3}{4}", cacheName, tile.ZoomLevel, tile.XIndex, tile.Y, extension); - - return LoadCachedTile(tile, uri, cacheKey); + return Task.CompletedTask; } private static DateTime GetExpiration(TimeSpan? maxAge)