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);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue