Update TileImageLoader.cs

This commit is contained in:
ClemensF 2020-09-25 16:14:52 +02:00
parent 664a3d0884
commit c79f534751

View file

@ -83,32 +83,30 @@ namespace MapControl
tileQueue.Enqueue(tiles); tileQueue.Enqueue(tiles);
var newTasks = Math.Min(tileQueue.Count, MaxLoadTasks) - taskCount; var numTasks = Math.Min(tileQueue.Count, MaxLoadTasks);
var tasks = Enumerable.Range(0, numTasks).Select(n => LoadTilesFromQueueAsync());
if (newTasks > 0) await Task.WhenAll(tasks).ConfigureAwait(false);
{
Interlocked.Add(ref taskCount, newTasks);
var tasks = Enumerable.Range(0, newTasks).Select(n => LoadTilesFromQueueAsync());
await Task.WhenAll(tasks).ConfigureAwait(false);
}
} }
} }
private async Task LoadTilesFromQueueAsync() private async Task LoadTilesFromQueueAsync()
{ {
while (tileQueue.TryDequeue(out Tile tile)) if (Interlocked.Increment(ref taskCount) <= MaxLoadTasks)
{ {
tile.Pending = false; while (tileQueue.TryDequeue(out Tile tile))
{
tile.Pending = false;
try try
{ {
await loadTileImage(tile).ConfigureAwait(false); Debug.WriteLine(Thread.CurrentThread.ManagedThreadId);
} await loadTileImage(tile).ConfigureAwait(false);
catch (Exception ex) }
{ catch (Exception ex)
Debug.WriteLine("TileImageLoader: {0}/{1}/{2}: {3}", tile.ZoomLevel, tile.XIndex, tile.Y, ex.Message); {
Debug.WriteLine("TileImageLoader: {0}/{1}/{2}: {3}", tile.ZoomLevel, tile.XIndex, tile.Y, ex.Message);
}
} }
} }