diff --git a/MapControl/Avalonia/Tile.Avalonia.cs b/MapControl/Avalonia/Tile.Avalonia.cs index e4165039..a7c5f700 100644 --- a/MapControl/Avalonia/Tile.Avalonia.cs +++ b/MapControl/Avalonia/Tile.Avalonia.cs @@ -14,17 +14,16 @@ namespace MapControl { var image = await loadImageFunc().ConfigureAwait(false); - await Dispatcher.UIThread.InvokeAsync( - () => - { - Image.Source = image; + void SetImageSource() + { + Image.Source = image; - if (image != null && MapBase.ImageFadeDuration > TimeSpan.Zero) + if (image != null && MapBase.ImageFadeDuration > TimeSpan.Zero) + { + var fadeInAnimation = new Animation { - var fadeInAnimation = new Animation - { - Duration = MapBase.ImageFadeDuration, - Children = + Duration = MapBase.ImageFadeDuration, + Children = { new KeyFrame { @@ -37,11 +36,13 @@ namespace MapControl Setters = { new Setter(Visual.OpacityProperty, 1d) } } } - }; + }; - _ = fadeInAnimation.RunAsync(Image); - } - }); + _ = fadeInAnimation.RunAsync(Image); + } + } + + await Dispatcher.UIThread.InvokeAsync(SetImageSource); } } } diff --git a/MapControl/WPF/Tile.WPF.cs b/MapControl/WPF/Tile.WPF.cs index f0ac1e75..5bb491fa 100644 --- a/MapControl/WPF/Tile.WPF.cs +++ b/MapControl/WPF/Tile.WPF.cs @@ -14,24 +14,25 @@ namespace MapControl { var image = await loadImageFunc().ConfigureAwait(false); - await Image.Dispatcher.InvokeAsync( - () => - { - Image.Source = image; + void SetImageSource() + { + Image.Source = image; - if (image != null && MapBase.ImageFadeDuration > TimeSpan.Zero) + if (image != null && MapBase.ImageFadeDuration > TimeSpan.Zero) + { + if (image is BitmapSource bitmap && !bitmap.IsFrozen && bitmap.IsDownloading) { - if (image is BitmapSource bitmap && !bitmap.IsFrozen && bitmap.IsDownloading) - { - bitmap.DownloadCompleted += BitmapDownloadCompleted; - bitmap.DownloadFailed += BitmapDownloadFailed; - } - else - { - BeginFadeInAnimation(); - } + bitmap.DownloadCompleted += BitmapDownloadCompleted; + bitmap.DownloadFailed += BitmapDownloadFailed; } - }); + else + { + BeginFadeInAnimation(); + } + } + } + + await Image.Dispatcher.InvokeAsync(SetImageSource); } private void BeginFadeInAnimation()