Update TileImageLoader.cs

This commit is contained in:
Clemens 2021-07-05 14:51:28 +02:00
parent 3cdbbe1e13
commit 6a4a784f32

View file

@ -56,9 +56,12 @@ namespace MapControl
/// If tileSource.UriFormat starts with "http" and tileCacheName is a non-empty string, /// If tileSource.UriFormat starts with "http" and tileCacheName is a non-empty string,
/// tile images will be cached in the TileImageLoader's Cache (if that is not null). /// tile images will be cached in the TileImageLoader's Cache (if that is not null).
/// </summary> /// </summary>
public async Task LoadTiles(IEnumerable<Tile> tiles, TileSource tileSource, string cacheName) public Task LoadTiles(IEnumerable<Tile> tiles, TileSource tileSource, string cacheName)
{ {
var tasks = new List<Task>();
tileQueue.Clear(); tileQueue.Clear();
TileSource = tileSource; TileSource = tileSource;
tiles = tiles.Where(tile => tile.Pending); tiles = tiles.Where(tile => tile.Pending);
@ -75,17 +78,15 @@ namespace MapControl
tileQueue.Enqueue(tile); tileQueue.Enqueue(tile);
} }
var tasks = new List<Task>();
while (taskCount < Math.Min(tileQueue.Count, MaxLoadTasks)) while (taskCount < Math.Min(tileQueue.Count, MaxLoadTasks))
{ {
Interlocked.Increment(ref taskCount); Interlocked.Increment(ref taskCount);
tasks.Add(LoadTilesFromQueueAsync(tileSource, cacheName)); tasks.Add(LoadTilesFromQueueAsync(tileSource, cacheName));
} }
await Task.WhenAll(tasks);
} }
return tasks.Count > 0 ? Task.WhenAll(tasks) : Task.CompletedTask;
} }
private async Task LoadTilesFromQueueAsync(TileSource tileSource, string cacheName) private async Task LoadTilesFromQueueAsync(TileSource tileSource, string cacheName)