private void RemoveDownloadTask(DownloadImageTask downloadTask) { lock (this.DownloadTasks) { this.DownloadTasks.Remove(downloadTask.TileIndex); } }
public Task <BitmapSource> LoadTileAsync(TileIndex.Full index, IProgress <double> progress, CancellationToken cancellationToken) { if (!this.DownloadTasks.TryGetValue(index, out var downloadTask) || !downloadTask.Status.IsAlive()) { var url = this.GetTileAddress(index); downloadTask = new DownloadImageTask(this, index, url); lock (this.DownloadTasks) { this.DownloadTasks.Add(index, downloadTask); } } downloadTask.HandleObserver(progress, cancellationToken); return(downloadTask.CompletionSource.Task); }