Example #1
0
        public void runThreadedSimulation(Simulation simulation, ISimulationListener listener)
        {
            lock (runningSimulations)
            {
                bool contains = false;
                foreach (SimulatorThread s in runningSimulations)
                {
                    if (s.simulation == simulation)
                    {
                        contains = true;
                        break;
                    }
                }
                if (!contains)
                {

                    simulation.setSimulationListener(listener);

                    //start a thread for the simulation and return
                    SimulatorThread threadTarget = new SimulatorThread(simulation);
                    Thread newThread = new Thread(new ThreadStart(threadTarget.run));
                    threadTarget.runningThread = newThread;
                    runningSimulations.AddLast(threadTarget);
                    newThread.Start();
                }
            }
        }
Example #2
0
        private void ReturnBtn_Click(object sender, EventArgs e)
        {
            if (SimulatorThread != null && SimulatorThread.IsAlive)
            {
                SimulatorThread.Abort();
            }

            ReturnClick?.Invoke(this);
        }
Example #3
0
 protected void simulationFinished(SimulatorThread simulation)
 {
     lock (runningSimulations)
     {
         runningSimulations.Remove(simulation);
         if (finishing && runningSimulations.Count == 0)
         {
             //call for the program to exit
             Application.Exit();
         }
     }
 }