TileImageLoader

This commit is contained in:
ClemensFischer 2025-08-22 22:41:57 +02:00
parent 22abd459b3
commit 67f319e98c
4 changed files with 14 additions and 14 deletions

View file

@ -130,7 +130,7 @@ namespace MapControl
}
UpdateTiles();
LoadTiles(Tiles, SourceName);
BeginLoadTiles(Tiles, SourceName);
}
}

View file

@ -191,11 +191,11 @@ namespace MapControl
protected bool IsBaseMapLayer => parentMap != null && parentMap.Children.Count > 0 && parentMap.Children[0] == this;
protected void LoadTiles(IEnumerable<Tile> tiles, string cacheName)
protected void BeginLoadTiles(IEnumerable<Tile> tiles, string cacheName)
{
if (TileSource != null && tiles != null && tiles.Any(tile => tile.IsPending))
{
TileImageLoader.LoadTiles(tiles, TileSource, cacheName, loadingProgress);
TileImageLoader.BeginLoadTiles(tiles, TileSource, cacheName, loadingProgress);
}
}

View file

@ -24,7 +24,7 @@ namespace MapControl
/// </summary>
public interface ITileImageLoader
{
void LoadTiles(IEnumerable<Tile> tiles, TileSource tileSource, string cacheName, IProgress<double> progress);
void BeginLoadTiles(IEnumerable<Tile> tiles, TileSource tileSource, string cacheName, IProgress<double> progress);
void CancelLoadTiles();
}
@ -80,7 +80,7 @@ namespace MapControl
/// Loads all pending tiles from the tiles collection. Tile image caching is enabled when the Cache
/// property is not null and tileSource.UriFormat starts with "http" and cacheName is a non-empty string.
/// </summary>
public void LoadTiles(IEnumerable<Tile> tiles, TileSource tileSource, string cacheName, IProgress<double> progress)
public void BeginLoadTiles(IEnumerable<Tile> tiles, TileSource tileSource, string cacheName, IProgress<double> progress)
{
if (Cache == null || tileSource.UriTemplate == null || !tileSource.UriTemplate.StartsWith("http"))
{
@ -100,13 +100,15 @@ namespace MapControl
Interlocked.Increment(ref taskCount);
Logger?.LogDebug("Task count: {count}", taskCount);
_ = Task.Run(async () =>
{
await LoadTilesFromStack(tileSource, cacheName, progress).ConfigureAwait(false);
_ = Task.Run(LoadTiles);
}
Interlocked.Decrement(ref taskCount);
Logger?.LogDebug("Task count: {count}", taskCount);
});
async Task LoadTiles()
{
await LoadTilesFromStack(tileSource, cacheName, progress).ConfigureAwait(false);
Interlocked.Decrement(ref taskCount);
Logger?.LogDebug("Task count: {count}", taskCount);
}
}

View file

@ -121,9 +121,7 @@ namespace MapControl
cacheName += "/" + tileMatrixSet.Identifier.Replace(':', '_');
}
var tiles = ChildLayers.SelectMany(layer => layer.Tiles);
LoadTiles(tiles, cacheName);
BeginLoadTiles(ChildLayers.SelectMany(layer => layer.Tiles), cacheName);
}
}