public MainForm() { InitializeComponent(); init(); this.simulation = new MySimulation(0, hockeyMatchTime - startTime, endTime - startTime); // register simulation lifecycle handlers simulation.OnSimulationDidFinish(handleSimulationDidFinish); simulation.OnSimulationWillStart(handleSimulationWillStart); simulation.OnReplicationWillStart(handleReplicationWillStart); simulation.OnReplicationDidFinish(handleReplicationDidFinish); simulation.OnRefreshUI(handleRefreshUi); }
public FindConfigurationForm() { InitializeComponent(); Init(); simulation = new MySimulation(0, hockeyMatchTime - startTime, endTime - startTime); Random seedGenerator = new Random(); chooseBusTypeRand = new Random(seedGenerator.Next()); chooseInterTimeRand = new Random(seedGenerator.Next()); chooseStartTimeRand = new Random(seedGenerator.Next()); simulation.OnReplicationDidFinish(simulation => { DoOnGuiThread(labelCurrentRep, () => { labelCurrentRep.Text = simulation.CurrentReplication.ToString(); }); }); }
private void buttonRun_Click(object sender, System.EventArgs e) { try { NumberOfReplications = Int32.Parse(TextBoxReplications.Text); } catch (Exception ex) { MessageBox.Show("Enter a valid number of replications", "Invalid format", MessageBoxButtons.OK); return; } try { GeneratorSeed = Int32.Parse(textBoxSeed.Text); // simulation start int userSeed = 0; if (userSeed > 0 || textBoxSeed.Text != "") { Constants.Seed = userSeed; } else { Constants.Seed = 0; } } catch (Exception ex) { MessageBox.Show("Enter a valid generator seed", "Invalid format", MessageBoxButtons.OK); return; } _first = true; DisableChanges(); Sim = new MySimulation(); Sim.SetSimSpeed(_interval, _duration); Sim.AgentModelu.SelectedCars = SelectedCars; System.Action <MySimulation> updateGuiAction = new System.Action <MySimulation>((s) => UpdateGui(s)); System.Action <MySimulation> ReplicationFinished = new Action <MySimulation>((s) => UpdateUIAfterReplication()); System.Action <MySimulation> SimulationFinished = new Action <MySimulation>((s) => UpdateUIAfterSimulation()); Sim.OnReplicationDidFinish(simulation => simulation.InvokeAsync(UpdateUIAfterReplication)); Sim.OnSimulationDidFinish(simulation => simulation.InvokeAsync(UpdateUIAfterSimulation)); try { Sim.OnRefreshUI(s => this.Invoke(updateGuiAction, s)); } catch (Exception ex) { throw ex; } // 777 600 Sim.SimulateAsync(NumberOfReplications, 788400); DrawChart(); System.Action <MySimulation> enableChangesAction = new Action <MySimulation>((s) => EnableChanges()); // nefunguje //Sim.OnSimulationDidFinish(s => this.Invoke(enableChangesAction)); }