private void BenchmarkIterationStop(BenchmarkIterationStopArgs args)
        {
            if (args.RunId != _runid)
                return;

            if (_currentTestCase != args.BenchmarkName || _currentIteration != args.Iteration)
                throw new InvalidOperationException();

            var evaluators = _evaluators.GetOrDefault(_currentTestCase);
            if (evaluators != null)
            {
                var allValues = _metricValues.GetOrAdd(_currentTestCase);
                while (allValues.Count < args.Iteration)
                    allValues.Add(null);

                var values = new Dictionary<string, double>();
                allValues.Add(values);

                foreach (var evaluator in _evaluators[_currentTestCase])
                    values[evaluator.Key.Id] = evaluator.Value.EndIteration(args);
            }

            _currentTestCase = null;
            _currentProcesses.Clear();
        }
        private void BenchmarkIterationStop(BenchmarkIterationStopArgs args)
        {
            if (args.RunId != _runid)
                return;

            if (_currentTestCase != args.BenchmarkName || _currentIteration != args.Iteration)
                throw new InvalidOperationException();

            string scenarioName = $"{args.BenchmarkName} Iteration {args.Iteration.ToString()}";
            double scenarioStopTime = args.TimeStampRelativeMSec;
            _currentScenarioRange.ScenarioStopTime = scenarioStopTime;
            _scenarioRanges.Add(_currentScenarioRange);

            var evaluators = _evaluators.GetOrDefault(_currentTestCase);
            if (evaluators != null)
            {
                var allValues = _metricValues.GetOrAdd(_currentTestCase);
                while (allValues.Count < args.Iteration)
                    allValues.Add(null);

                var values = new Dictionary<string, Object>();
                allValues.Add(values);

                foreach (var evaluator in _evaluators[_currentTestCase])
                    values[evaluator.Key.Id] = evaluator.Value.EndIteration(args);
            }

            _currentTestCase = null;
            _currentProcesses.Clear();
            _currentThread = null;
        }