public JobManager(ILoggerFactory loggerFactory) { logger = loggerFactory.CreateLogger <JobManager>(); logger.LogTrace("creating jobManager"); this.TotalProgress = new DerivedProgressionManager(Progress, loggerFactory); this.StateChanges = Progress .Connect() .Transform(prog => prog.WhenAnyValue(vm => vm.State)) .ToCollection() .Select(Observable.CombineLatest) .Switch() .Select(JobStateHelper.MergeStates); }