Viki.LoadRunner.Engine.Executor.Threads.TestExecutorThread.ExecuteScenarioThreadFunction C# (CSharp) Method

ExecuteScenarioThreadFunction() private method

private ExecuteScenarioThreadFunction ( ) : void
return void
        private void ExecuteScenarioThreadFunction()
        {
            try
            {
                int threadIterationId = 0;

                ExecuteScenarioSetup();

                while (_stopQueued == false || _executeIterationQueued)
                {
                    if (_executeIterationQueued)
                    {
                        _testContext.Reset(threadIterationId++, _queuedIterationId);

                        _testContext.Checkpoint(Checkpoint.IterationSetupCheckpointName);
                        bool setupSuccess = ExecuteWithExceptionHandling(() => _loadTestScenario.IterationSetup(_testContext), _testContext);

                        if (setupSuccess)
                        {
                            _testContext.Checkpoint(Checkpoint.IterationStartCheckpointName);

                            _testContext.Start();
                            bool iterationSuccess = ExecuteWithExceptionHandling(() => _loadTestScenario.ExecuteScenario(_testContext), _testContext);
                            _testContext.Stop();

                            if (iterationSuccess)
                            {
                                _testContext.Checkpoint(Checkpoint.IterationEndCheckpointName);
                            }
                        }
                        else
                        {
                            _testContext.Start();
                            _testContext.Stop();
                        }

                        _testContext.Checkpoint(Checkpoint.IterationTearDownCheckpointName);
                        ExecuteWithExceptionHandling(() => _loadTestScenario.IterationTearDown(_testContext), _testContext);

                        _executeIterationQueued = false;
                        OnScenarioIterationFinished();
                    }
                    else
                    {
                        Thread.Sleep(1);
                    }
                }

                _testContext.Reset(-1,-1);
                _loadTestScenario.ScenarioTearDown(_testContext);
            }
            catch (Exception ex)
            {
                if (ex.GetType() != typeof(ThreadAbortException))
                {
                    OnThreadFailed(ex);
                }
            }

        }