public GeneralStatusReporter(GeneralStatusHolder generalStatusHolder)
        {
            Checks.ArgumentNotNull(generalStatusHolder, "generalStatusHolder");

            _generalStatusHolder = generalStatusHolder;
            _generalStatusHolder.Progress = 0.0;
        }
        private void ProcessGeneralStatus(GeneralStatusHolder generalStatusHolder)
        {
            _overallStatus.Description = generalStatusHolder.Description;

            _overallStatus.Progress = CalculateOverallProgress();

            OnStatusChanged();
        }
        public IGeneralStatusReporter CreateGeneralStatusReporter(double weight)
        {
            var status = new GeneralStatusHolder(weight);

            _statusHolders.Add(status);

            var reporter = new GeneralStatusReporter(status);

            reporter.StatusReported += ProcessGeneralStatus;

            return(reporter);
        }