mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
Update TileImageLoader.cs
This commit is contained in:
parent
664a3d0884
commit
c79f534751
|
|
@ -83,32 +83,30 @@ namespace MapControl
|
|||
|
||||
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)
|
||||
{
|
||||
Interlocked.Add(ref taskCount, newTasks);
|
||||
|
||||
var tasks = Enumerable.Range(0, newTasks).Select(n => LoadTilesFromQueueAsync());
|
||||
|
||||
await Task.WhenAll(tasks).ConfigureAwait(false);
|
||||
}
|
||||
await Task.WhenAll(tasks).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
await loadTileImage(tile).ConfigureAwait(false);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine("TileImageLoader: {0}/{1}/{2}: {3}", tile.ZoomLevel, tile.XIndex, tile.Y, ex.Message);
|
||||
try
|
||||
{
|
||||
Debug.WriteLine(Thread.CurrentThread.ManagedThreadId);
|
||||
await loadTileImage(tile).ConfigureAwait(false);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine("TileImageLoader: {0}/{1}/{2}: {3}", tile.ZoomLevel, tile.XIndex, tile.Y, ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue