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);
}
}
}