From 5fe66d94a2036bfab1cdef883589b77f8c785024 Mon Sep 17 00:00:00 2001 From: ClemensFischer Date: Wed, 7 Feb 2024 12:44:27 +0100 Subject: [PATCH] Update TileImageLoader.cs --- MapControl/Shared/TileImageLoader.cs | 44 +++++++++++++++++----------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/MapControl/Shared/TileImageLoader.cs b/MapControl/Shared/TileImageLoader.cs index c50c379e..d3a2c7a7 100644 --- a/MapControl/Shared/TileImageLoader.cs +++ b/MapControl/Shared/TileImageLoader.cs @@ -12,6 +12,7 @@ using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; +using System.Threading; using System.Threading.Tasks; namespace MapControl @@ -101,14 +102,7 @@ namespace MapControl { progress?.Report((double)(tileCount - tileQueue.Count) / tileCount); - try - { - await LoadTileAsync(tile, tileSource, cacheName).ConfigureAwait(false); - } - catch (Exception ex) - { - Debug.WriteLine($"TileImageLoader: {tile.ZoomLevel}/{tile.Column}/{tile.Row}: {ex.Message}"); - } + await LoadTileAsync(tile, tileSource, cacheName).ConfigureAwait(false); } } @@ -126,16 +120,23 @@ namespace MapControl private static Task LoadTileAsync(Tile tile, TileSource tileSource, string cacheName) { - if (string.IsNullOrEmpty(cacheName)) + try { - return LoadTileAsync(tile, () => tileSource.LoadImageAsync(tile.Column, tile.Row, tile.ZoomLevel)); + if (string.IsNullOrEmpty(cacheName)) + { + return LoadTileAsync(tile, () => tileSource.LoadImageAsync(tile.Column, tile.Row, tile.ZoomLevel)); + } + + var uri = tileSource.GetUri(tile.Column, tile.Row, tile.ZoomLevel); + + if (uri != null) + { + return LoadCachedTileAsync(tile, uri, cacheName); + } } - - var uri = tileSource.GetUri(tile.Column, tile.Row, tile.ZoomLevel); - - if (uri != null) + catch (Exception ex) { - return LoadCachedTileAsync(tile, uri, cacheName); + Debug.WriteLine($"TileImageLoader: {tile.ZoomLevel}/{tile.Column}/{tile.Row}: {ex.Message}"); } return Task.CompletedTask; @@ -153,7 +154,16 @@ namespace MapControl var cacheKey = string.Format(CultureInfo.InvariantCulture, "{0}/{1}/{2}/{3}{4}", cacheName, tile.ZoomLevel, tile.Column, tile.Row, extension); - var buffer = await Cache.GetAsync(cacheKey).ConfigureAwait(false); + byte[] buffer = null; + + try + { + buffer = await Cache.GetAsync(cacheKey).ConfigureAwait(false); + } + catch (Exception ex) + { + Debug.WriteLine($"TileImageLoader: {cacheKey}: {ex.Message}"); + } if (buffer == null) { @@ -178,7 +188,7 @@ namespace MapControl await Cache.SetAsync(cacheKey, buffer, cacheOptions).ConfigureAwait(false); } } - //else System.Diagnostics.Debug.WriteLine($"Cached: {cacheKey} - {buffer.Length} bytes"); + //else Debug.WriteLine($"Cached: {cacheKey} - {buffer.Length} bytes"); if (buffer != null && buffer.Length > 0) {