private async Task <bool> DownloadMissingPackages(List <AnnotationPackage> packages) { var successful = true; this._downloading = true; this._downloadProgress = new AnnotationPackageTransferProgress { FileCount = packages.Count }; _ = Task.Run(() => this.UpdateProgressBar()); this._tokenSource = new CancellationTokenSource(); var token = this._tokenSource.Token; try { for (var i = 0; i < packages.Count; i++) { this._downloadedPackage = packages[i]; this._downloadProgress.CurrentFile = packages[i].PackageName; packages[i].Downloading = true; packages[i] = await this._annotationPackageProvider.DownloadPackageAsync(packages[i], token); this._downloadProgress.TransferedFiles++; this._downloadProgress.CurrentFilePercentDone = 0; this.dataGridViewResult.Refresh(); } } catch (Exception) { successful = false; MessageBox.Show("The download was cancelled.", "Download failed", MessageBoxButtons.OK, MessageBoxIcon.Information); } this._downloading = false; return(successful); }
public async Task SyncPackagesAsync(AnnotationPackage[] packages, CancellationToken token = default(CancellationToken)) { this.IsSyncing = true; this._syncProgress = new AnnotationPackageTransferProgress() { FileCount = packages.Length }; try { foreach (var package in packages) { await this.UpdatePackageAsync(package, token).ConfigureAwait(false); } } finally { this.IsSyncing = false; } }
public async Task UploadPackagesAsync(List <string> packagePaths, List <string> tags, string user, CancellationToken token = default(CancellationToken)) { this.IsUploading = true; this._uploadProgress = new AnnotationPackageTransferProgress(); foreach (var packagePath in packagePaths) { var fileCount = Directory.GetFiles(packagePath).Count(); this._uploadProgress.FileCount += fileCount; } try { foreach (var packagePath in packagePaths) { await this.UploadPackageAsync(packagePath, tags, user, token).ConfigureAwait(false); } } finally { this.IsUploading = false; } }