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);
        }
Пример #2
0
        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;
            }
        }
Пример #3
0
        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;
            }
        }