diff --git a/MapControl/Shared/MapTileLayer.cs b/MapControl/Shared/MapTileLayer.cs index 71c02da3..8960048f 100644 --- a/MapControl/Shared/MapTileLayer.cs +++ b/MapControl/Shared/MapTileLayer.cs @@ -208,7 +208,7 @@ namespace MapControl Children.Add(tile.Image); } - TileImageLoader.LoadTilesAsync(Tiles, TileSource, SourceName); + TileImageLoader.LoadTiles(Tiles, TileSource, SourceName); } protected override Size MeasureOverride(Size availableSize) diff --git a/MapControl/Shared/MapTileLayerBase.cs b/MapControl/Shared/MapTileLayerBase.cs index 61ae4b98..5eeb1cb3 100644 --- a/MapControl/Shared/MapTileLayerBase.cs +++ b/MapControl/Shared/MapTileLayerBase.cs @@ -19,7 +19,7 @@ namespace MapControl { public interface ITileImageLoader { - void LoadTilesAsync(IEnumerable tiles, TileSource tileSource, string sourceName); + void LoadTiles(IEnumerable tiles, TileSource tileSource, string sourceName); } public abstract class MapTileLayerBase : Panel, IMapLayer diff --git a/MapControl/Shared/TileImageLoader.cs b/MapControl/Shared/TileImageLoader.cs index edf78b37..1f9314a6 100644 --- a/MapControl/Shared/TileImageLoader.cs +++ b/MapControl/Shared/TileImageLoader.cs @@ -37,7 +37,7 @@ namespace MapControl public static string CacheKeyFormat { get; set; } = "{0}/{1}/{2}/{3}{4}"; - public class TileQueue : ConcurrentStack + private class TileQueue : ConcurrentStack { public void Enqueue(IEnumerable tiles) { @@ -58,10 +58,10 @@ namespace MapControl /// Loads all pending tiles from the tiles collection. /// If tileSource.UriFormat starts with "http" and sourceName is a non-empty string, /// tile images will be cached in the TileImageLoader's Cache (if it's not null). - /// The method is async void because it implements void ITileImageLoader.LoadTilesAsync + /// The method is async void because it implements void ITileImageLoader.LoadTiles /// and is not awaited when it is called in MapTileLayer.UpdateTiles(). /// - public async void LoadTilesAsync(IEnumerable tiles, TileSource tileSource, string sourceName) + public async void LoadTiles(IEnumerable tiles, TileSource tileSource, string sourceName) { tileQueue.Clear(); diff --git a/MapControl/Shared/WmtsTileLayer.cs b/MapControl/Shared/WmtsTileLayer.cs index 20d2df4a..837a92c1 100644 --- a/MapControl/Shared/WmtsTileLayer.cs +++ b/MapControl/Shared/WmtsTileLayer.cs @@ -186,7 +186,7 @@ namespace MapControl } } - TileImageLoader.LoadTilesAsync(tiles, tileSource, sourceName); + TileImageLoader.LoadTiles(tiles, tileSource, sourceName); } private async void OnLoaded(object sender, RoutedEventArgs e) diff --git a/MapControl/WPF/TileImageLoader.WPF.cs b/MapControl/WPF/TileImageLoader.WPF.cs index bb19328b..989d6129 100644 --- a/MapControl/WPF/TileImageLoader.WPF.cs +++ b/MapControl/WPF/TileImageLoader.WPF.cs @@ -56,7 +56,9 @@ namespace MapControl if (buffer != null && buffer.Length > 0) { - SetTileImageAsync(tile, await ImageLoader.LoadImageAsync(buffer).ConfigureAwait(false)); + var image = await ImageLoader.LoadImageAsync(buffer).ConfigureAwait(false); + + SetTileImage(tile, image); } } @@ -64,15 +66,15 @@ namespace MapControl { var image = await tileSource.LoadImageAsync(tile.XIndex, tile.Y, tile.ZoomLevel).ConfigureAwait(false); - if (image != null) - { - SetTileImageAsync(tile, image); - } + SetTileImage(tile, image); } - private static void SetTileImageAsync(Tile tile, ImageSource image) + private static void SetTileImage(Tile tile, ImageSource image) { - tile.Image.Dispatcher.InvokeAsync(() => tile.SetImage(image)); + if (image != null) + { + tile.Image.Dispatcher.InvokeAsync(() => tile.SetImage(image)); + } } private static Task GetCacheAsync(string cacheKey)