public IProgressReporter CreateProgressReporter(CancellationToken cancellationToken = default(CancellationToken)) { var progress = new ProgressCollector(Current.Dispatcher.SynchronizingObject, cancellationToken); AddProgress(progress); return(progress.ProgressReporter); }
public ReporterImpl(ProgressCollector collector, ReporterImpl parent, double scaleFactor, CancellationToken cancellationToken) { _progressCollector = collector; _parentReporter = parent; _scaleFactor = scaleFactor; _cancellationToken = cancellationToken; }
public void AddProgress(ProgressCollector progress) { if (progress == null) { throw new ArgumentNullException(nameof(progress)); } Current.Dispatcher.VerifyAccess(); if (currentProgress != null) { currentProgress.ProgressMonitorDisposed -= progress_ProgressMonitorDisposed; currentProgress.PropertyChanged -= progress_PropertyChanged; } waitingProgresses.Push(currentProgress); // push even if currentProgress==null SetActiveProgress(progress); }
private void SetActiveProgress(ProgressCollector progress) { Current.Dispatcher.VerifyAccess(); currentProgress = progress; if (progress == null) { _statusBarView.HideProgress(); return; } progress.ProgressMonitorDisposed += progress_ProgressMonitorDisposed; if (progress.ProgressMonitorIsDisposed) { progress_ProgressMonitorDisposed(progress, null); return; } progress.PropertyChanged += progress_PropertyChanged; }