Update TileImageLoader.cs

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

View file

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