Version 4.12.2 Minor changes in TileImageLoader.

This commit is contained in:
ClemensF 2019-06-08 23:18:33 +02:00
parent 0c0a0ae511
commit 8491a4fc7c
16 changed files with 70 additions and 81 deletions

View file

@ -7,8 +7,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyVersion("4.12.1")]
[assembly: AssemblyFileVersion("4.12.1")]
[assembly: AssemblyVersion("4.12.2")]
[assembly: AssemblyFileVersion("4.12.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -7,8 +7,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyVersion("4.12.1")]
[assembly: AssemblyFileVersion("4.12.1")]
[assembly: AssemblyVersion("4.12.2")]
[assembly: AssemblyFileVersion("4.12.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -7,8 +7,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyVersion("4.12.1")]
[assembly: AssemblyFileVersion("4.12.1")]
[assembly: AssemblyVersion("4.12.2")]
[assembly: AssemblyFileVersion("4.12.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -7,8 +7,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyVersion("4.12.1")]
[assembly: AssemblyFileVersion("4.12.1")]
[assembly: AssemblyVersion("4.12.2")]
[assembly: AssemblyFileVersion("4.12.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -63,34 +63,20 @@ namespace MapControl
if (tileSource != null && tiles.Any())
{
if (Cache == null || tileSource.UriFormat == null || !tileSource.UriFormat.StartsWith("http"))
{
sourceName = null; // do not use cache
}
pendingTiles.PushRange(tiles.Reverse().ToArray());
Func<Tile, Task> loadFunc;
if (Cache != null && !string.IsNullOrEmpty(sourceName) &&
tileSource.UriFormat != null && tileSource.UriFormat.StartsWith("http"))
{
loadFunc = tile => LoadCachedTileImageAsync(tile, tileSource, sourceName);
}
else
{
loadFunc = tile => LoadTileImageAsync(tile, tileSource);
}
var newTasks = Math.Min(pendingTiles.Count, MaxLoadTasks) - taskCount;
while (--newTasks >= 0)
{
Interlocked.Increment(ref taskCount);
var task = Task.Run(() => LoadTilesAsync(loadFunc)); // do not await
}
//Debug.WriteLine("{0}: {1} tasks", Environment.CurrentManagedThreadId, taskCount);
}
}
private async Task LoadTilesAsync(Func<Tile, Task> loadTileImageFunc)
Task.Run(async () => // do not await
{
Tile tile;
@ -100,7 +86,7 @@ namespace MapControl
try
{
await loadTileImageFunc(tile);
await LoadTileImageAsync(tile, tileSource, sourceName);
}
catch (Exception ex)
{
@ -109,10 +95,18 @@ namespace MapControl
}
Interlocked.Decrement(ref taskCount);
//Debug.WriteLine("{0}: {1} tasks", Environment.CurrentManagedThreadId, taskCount);
});
}
}
}
private async Task LoadCachedTileImageAsync(Tile tile, TileSource tileSource, string sourceName)
private async Task LoadTileImageAsync(Tile tile, TileSource tileSource, string sourceName)
{
if (string.IsNullOrEmpty(sourceName))
{
await LoadTileImageAsync(tile, tileSource);
}
else
{
var uri = tileSource.GetUri(tile.XIndex, tile.Y, tile.ZoomLevel);
@ -127,7 +121,8 @@ namespace MapControl
var cacheKey = string.Format(CacheKeyFormat, sourceName, tile.ZoomLevel, tile.XIndex, tile.Y, extension);
await LoadCachedTileImageAsync(tile, uri, cacheKey);
await LoadTileImageAsync(tile, uri, cacheKey);
}
}
}

View file

@ -110,15 +110,9 @@ namespace MapControl
/// </summary>
public virtual async Task<ImageSource> LoadImageAsync(int x, int y, int zoomLevel)
{
ImageSource imageSource = null;
var uri = GetUri(x, y, zoomLevel);
if (uri != null)
{
imageSource = await ImageLoader.LoadImageAsync(uri);
}
return imageSource;
return uri != null ? await ImageLoader.LoadImageAsync(uri) : null;
}
private string GetDefaultUri(int x, int y, int zoomLevel)

View file

@ -7,8 +7,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyVersion("4.12.1")]
[assembly: AssemblyFileVersion("4.12.1")]
[assembly: AssemblyVersion("4.12.2")]
[assembly: AssemblyFileVersion("4.12.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -26,7 +26,7 @@ namespace MapControl
/// </summary>
public static Caching.IImageCache Cache { get; set; }
private async Task LoadCachedTileImageAsync(Tile tile, Uri uri, string cacheKey)
private async Task LoadTileImageAsync(Tile tile, Uri uri, string cacheKey)
{
var cacheItem = await Cache.GetAsync(cacheKey);
var cacheBuffer = cacheItem?.Buffer;
@ -47,7 +47,7 @@ namespace MapControl
}
}
if (cacheBuffer != null)
if (cacheBuffer != null) // cached image not expired or download failed
{
await LoadTileImageAsync(tile, cacheBuffer);
}

View file

@ -8,8 +8,8 @@ using System.Windows;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyVersion("4.12.1")]
[assembly: AssemblyFileVersion("4.12.1")]
[assembly: AssemblyVersion("4.12.2")]
[assembly: AssemblyFileVersion("4.12.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -28,7 +28,7 @@ namespace MapControl
/// </summary>
public static ObjectCache Cache { get; set; } = MemoryCache.Default;
private async Task LoadCachedTileImageAsync(Tile tile, Uri uri, string cacheKey)
private async Task LoadTileImageAsync(Tile tile, Uri uri, string cacheKey)
{
DateTime expiration;
var cacheBuffer = GetCachedImage(cacheKey, out expiration);
@ -52,7 +52,7 @@ namespace MapControl
}
}
if (cacheBuffer != null)
if (cacheBuffer != null) // cached image not expired or download failed
{
using (var stream = new MemoryStream(cacheBuffer))
{

View file

@ -7,8 +7,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyVersion("4.12.1")]
[assembly: AssemblyFileVersion("4.12.1")]
[assembly: AssemblyVersion("4.12.2")]
[assembly: AssemblyFileVersion("4.12.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -7,8 +7,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyVersion("4.12.1")]
[assembly: AssemblyFileVersion("4.12.1")]
[assembly: AssemblyVersion("4.12.2")]
[assembly: AssemblyFileVersion("4.12.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -7,8 +7,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyVersion("4.12.1")]
[assembly: AssemblyFileVersion("4.12.1")]
[assembly: AssemblyVersion("4.12.2")]
[assembly: AssemblyFileVersion("4.12.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -7,8 +7,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyVersion("4.12.1")]
[assembly: AssemblyFileVersion("4.12.1")]
[assembly: AssemblyVersion("4.12.2")]
[assembly: AssemblyFileVersion("4.12.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -8,7 +8,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("4.12.1")]
[assembly: AssemblyFileVersion("4.12.1")]
[assembly: AssemblyVersion("4.12.2")]
[assembly: AssemblyFileVersion("4.12.2")]
[assembly: AssemblyConfiguration("")]
[assembly: ComVisible(false)]

View file

@ -7,8 +7,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCompany("Clemens Fischer")]
[assembly: AssemblyCopyright("Copyright © 2019 Clemens Fischer")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyVersion("4.12.1")]
[assembly: AssemblyFileVersion("4.12.1")]
[assembly: AssemblyVersion("4.12.2")]
[assembly: AssemblyFileVersion("4.12.2")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]