public async Task Run(SensitivityAnalysis sensitivityAnalysis)
        {
            if (!_entityValidationTask.Validate(sensitivityAnalysis))
            {
                return;
            }

            try
            {
                if (IsRunning)
                {
                    throw new OSPSuiteException(Error.CannotStartTwoConcurrentSensitivityAnalyses);
                }

                using (_sensitivityAnalysisEngine = _sensitivityAnalysisEngineFactory.Create())
                {
                    var begin = SystemTime.UtcNow();
                    await _sensitivityAnalysisEngine.StartAsync(sensitivityAnalysis);

                    var end       = SystemTime.UtcNow();
                    var timeSpent = end - begin;
                    _dialogCreator.MessageBoxInfo(Captions.SensitivityAnalysis.SensitivityAnalysisFinished(timeSpent.ToDisplay()));
                }
            }
            catch (OperationCanceledException)
            {
                _dialogCreator.MessageBoxInfo(Captions.SensitivityAnalysis.SensitivityAnalysisCanceled);
            }
            finally
            {
                _executionContext.ProjectChanged();
                _sensitivityAnalysisEngine = null;
            }
        }
 private void simulationTerminated(ISensitivityAnalysisEngine sensitivityAnalysisEngine)
 {
     terminated(sensitivityAnalysisEngine, EventArgs.Empty);
 }
 private void initializeProgress(ISensitivityAnalysisEngine sensitivityAnalysisEngine, SensitivityAnalysisRunOptions options)
 {
     sensitivityAnalysisEngine.Terminated         += terminated;
     sensitivityAnalysisEngine.SimulationProgress += simulationProgress;
     _progressUpdater = options.ShowProgress ? _progressManager.Create() : new NoneProgressUpdater();
 }