public virtual void RunUpload(IEnumerable <PictureItem> items, BackgroundWorker bw) { this.BW = bw; CreateDirectory(UploadFolder); BW.ReportProgress(0, "Сохранение фото..."); ProgressTicker ticker = new ProgressTicker(items.Count(), 20); ticker.ProgressChanged += Ticker_ProgressChanged; foreach (var item in items) { try { if (!ImageDownloadHelper.IsUrlImage((item.Address))) { throw new Exception("Скачиваемый контент не является графическим изображением."); } byte[] imageByteArray = ImageDownloadHelper.DownloadData(item.Address); string ext = imageByteArray.GetExtention(); string pictureName = $"{item.Name}.{ext}"; item.Address = UploadPicture(imageByteArray, pictureName); item.Status = true; ticker.Tick(); } catch (Exception ex) { item.Status = false; item.Address += $" Ошибка: {ex.Message}."; } } ticker = null; }
public void Progress_ticker_does_not_write_to_console_if_output_is_redirected() { // Arrange var(console, stdOut, _) = VirtualConsole.CreateBuffered(); ProgressTicker ticker = console.CreateProgressTicker(); double[] progressValues = Enumerable.Range(0, 100).Select(p => p / 100.0).ToArray(); // Act foreach (double progress in progressValues) { ticker.Report(progress); } string stdOutData = console.Output.Encoding.GetString(stdOut.GetBytes()); // Assert stdOutData.Should().BeEmpty(); _output.WriteLine(stdOutData); }
public void Progress_ticker_can_be_used_to_report_progress_to_console() { // Arrange var(console, stdOut, _) = VirtualConsole.CreateBuffered(isOutputRedirected: false, isErrorRedirected: false); ProgressTicker ticker = console.CreateProgressTicker(); double[] progressValues = Enumerable.Range(0, 100).Select(p => p / 100.0).ToArray(); string[] progressStringValues = progressValues.Select(p => p.ToString("P2")).ToArray(); // Act foreach (double progress in progressValues) { ticker.Report(progress); } string stdOutData = console.Output.Encoding.GetString(stdOut.GetBytes()); // Assert stdOutData.Should().ContainAll(progressStringValues); _output.WriteLine(stdOutData); }
private void Bw_ExcelReader_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Error != null) { this.SpliterCompleted?.Invoke(null, new RunWorkerCompletedEventArgs(null, e.Error, false)); } else { List <string> list = (List <string>)e.Result; this.split_ItemsNumber = list.Count; this.ProgressChanged?.Invoke(null, new ProgressChangedEventArgs(0, $"Обработано 0 из {list.Count}")); int transactions = (Parameters.RowEnd - Parameters.RowBegin + 1) * this.split_ItemsNumber; this.ticker = new ProgressTicker(transactions, 1); this.ticker.ProgressChanged += Ticker_ProgressChanged; List <List <string> > splittedList = Extentions.SplitList(list, this.UseMultiThreads); this.ThreadsNumber = splittedList.Count; this.IsBusy = true; workers = new List <BackgroundWorker>(); foreach (List <string> l in splittedList) { SplitThread thread = new Office.SplitThread(this.Parameters); BackgroundWorker bw_SplitThread = new BackgroundWorker(); bw_SplitThread.WorkerReportsProgress = true; bw_SplitThread.WorkerSupportsCancellation = true; bw_SplitThread.DoWork += thread.SplitExcelFile; bw_SplitThread.ProgressChanged += Bw_SplitThread_ProgressChanged; bw_SplitThread.RunWorkerCompleted += Bw_SplitThread_RunWorkerCompleted; workers.Add(bw_SplitThread); bw_SplitThread.RunWorkerAsync(l); } } }
public ProgressHub(ProgressTicker progress) { this.progress = progress; }