コード例 #1
0
ファイル: Uploader.cs プロジェクト: TongEn/PicturesUploader
        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;
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
ファイル: SplitManager.cs プロジェクト: Jugius/SplitExcel
        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);
                }
            }
        }
コード例 #5
0
ファイル: ProgressHub.cs プロジェクト: teamcore/Utility
 public ProgressHub(ProgressTicker progress)
 {
     this.progress = progress;
 }