} // end of CurrentTime #endregion //-------------------------------------------------------------------------------------------------- // Methods //-------------------------------------------------------------------------------------------------- #region RunSimulation public void RunSimulation(double firstWait = 0) { _simulationRunning = true; if (VisualizationEnabled) { SimulationTimer.Interval = TimeSpan.FromMilliseconds(firstWait); SimulationTimer.Start(); } else { BackgroundWorkerNonVisualization.RunWorkerAsync(); } // end if } // end of RunSimulation
} // end of ActionsAfterFinishingSimulationRun #endregion #region NonVisualizationLoop public void NonVisualizationLoop() { DateTime originalTimerTime = CurrentTime; while (BackgroundWorkerNonVisualization.CancellationPending == false && !SimulationModel.StopSimulation(CurrentTime)) { DateTime newTime; bool modelRunning = SimulationEngine.RunSingleStepSimulationModel(_currentTime, out newTime); if (modelRunning) { BackgroundWorkerNonVisualization.ReportProgress(SimulationEngine.SimulationModel.GetSimulationProgress(newTime)); _currentTime = newTime; } // end if } // end while } // end of
} // end of RunSimulation #endregion #region StopSimulation public void StopSimulation(bool pauseSim) { if (VisualizationEnabled) { SimulationTimer.Stop(); } else { BackgroundWorkerNonVisualization.CancelAsync(); } // end if _simulationRunning = false; if (!pauseSim) { ActionsAfterFinishingSimulationRun(); } // end if } // end of StopSimulation