예제 #1
0
        private async Task WriteFileToDiskParallelAsync(List <MarketoFile> fileResult, string saveRootPath, IProgress <ProgressReportModel> progress, CancellationToken cancellationToken)
        {
            ProgressReportModel report = new ProgressReportModel();
            int processedNum           = 0;

            var po = new ParallelOptions {
                CancellationToken = cancellationToken
            };

            await Task.Run(() =>
            {
                Parallel.ForEach(fileResult, po, (file) =>
                {
                    string fileName = Path.Combine(saveRootPath, file.Name);
                    FileDownloader.DownFile(file.Url, fileName);

                    if (po.CancellationToken.IsCancellationRequested)
                    {
                        return;
                    }

                    processedNum += 1;
                    report.PercentageComplete = (processedNum * 100) / fileResult.Count;
                    report.File = file;
                    progress.Report(report);
                });
            });
        }
예제 #2
0
 private static void WriteFileToDisk(GetFilesResponse fileResult, string saveRootPath)
 {
     if (fileResult?.Result == null) return;
     foreach (MarketoFile file in fileResult?.Result)
     {
         string fileName = Path.Combine(saveRootPath, file.Name);
         FileDownloader.DownFile(file.Url, fileName);
         Console.WriteLine(file?.Url);
     }
 }
예제 #3
0
        private void WriteFileToDisk(string folderId, List <MarketoFile> fileResult, string saveRootPath, IProgress <ProgressReportModel> progress, CancellationToken cancellationToken)
        {
            ProgressReportModel report = new ProgressReportModel();
            int processedNum           = 0;

            foreach (var file in fileResult)
            {
                string fileName = Path.Combine(saveRootPath, file.Name);
                FileDownloader.DownFile(file.Url, fileName);
                cancellationToken.ThrowIfCancellationRequested();
                processedNum += 1;
                report.PercentageComplete = (processedNum * 100) / fileResult.Count;
                report.File = file;
                progress.Report(report);
            }
        }