Example #1
0
 private void RemoveDownloadTask(DownloadImageTask downloadTask)
 {
     lock (this.DownloadTasks)
     {
         this.DownloadTasks.Remove(downloadTask.TileIndex);
     }
 }
Example #2
0
        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);
        }