public void RunScenario(RunParameters parameters,bool showWindow) { if (Scenario == null) { MsgTools.ShowInfo(RiverSystemOptions.NEED_PROJECT_OPEN_MESSAGE); return; } // ProjectManager.Instance.SaveAuditLogMessage("Open run scenario window"); // Scenario.outputManager = new Obsolete.Recording.OutputManager(); if(parameters!=null) ApplyRunParameters(parameters); if (IsRunnable()) { // JobRunner.BeforeRun += new BeforeTemporalRunHandler(JobRunner_BeforeRun); Scenario.RunManager.UpdateEvent = new EventHandler<JobRunEventArgs>(JobRunner_Update); ScenarioRunWindow runWindow = null; var startOfRun = DateTime.Now; if (showWindow) { runWindow = new ScenarioRunWindow(Scenario); //runWindow.SetOwner(this); //runWindow.WindowStartupLocation = WindowStartupLocation.CenterOwner; //Enabled = false; runWindow.Show(); ProjectManager.Instance.SaveAuditLogMessage("Run started at " + DateTime.Now); } Task x = Task.Factory.StartNew(() => Scenario.RunManager.Execute()); while (!x.IsCompleted) { Thread.Sleep(50); Application.DoEvents(); } // LogRunEnd(startOfRun); if (showWindow) { ProjectManager.Instance.SaveAuditLogMessage("Run finished at " + DateTime.Now + " and took " + TimeTools.TimeSpanString(DateTime.Now - startOfRun)); runWindow.Close(); runWindow.Dispose(); } //if so then run //running = true; //runControl = new ScenarioRunWindow(Scenario); //runControl.SetOwner(MainForm.Instance); //runControl.Show(); //Scenario.RunManager.Execute(); // lock (lockObj) // { //while (running) //{ // Thread.Sleep(50); // Application.DoEvents(); // //Monitor.Wait(lockObj); //} // } //runControl.Close(); //runControl.Dispose(); } // ProjectManager.Instance.SaveAuditLogMessage("Close run scenario window"); }
public void RunScenario(RunParameters parameters, bool showWindow, ServerLogListener logger) { if (Scenario == null) { MsgTools.ShowInfo(RiverSystemOptions.NEED_PROJECT_OPEN_MESSAGE); return; } if (parameters != null) { ApplyRunParameters(parameters); } if (!IsRunnable()) { throw new Exception("Scenario not runnable"); } Scenario.RunManager.UpdateEvent = new EventHandler <JobRunEventArgs>(JobRunner_Update); ScenarioRunWindow runWindow = null; var startOfRun = DateTime.Now; if (showWindow) { runWindow = new ScenarioRunWindow(Scenario); runWindow.Show(); ProjectManager.Instance.SaveAuditLogMessage("Run started at " + DateTime.Now); } Task x = Task.Factory.StartNew(() => Scenario.RunManager.Execute()); while (!x.IsCompleted) { Thread.Sleep(50); Application.DoEvents(); } if (showWindow) { ProjectManager.Instance.SaveAuditLogMessage("Run finished at " + DateTime.Now + " and took " + TimeTools.TimeSpanString(DateTime.Now - startOfRun)); runWindow.Close(); runWindow.Dispose(); } if (parameters.Params.ContainsKey(RUN_NAME_KEY)) { try { var latestRun = Scenario.Project.ResultManager.AllRuns().Last(); var runName = parameters.Params[RUN_NAME_KEY]; SetPrivateRunProperty(latestRun, "_runName", runName); SetPrivateRunProperty(latestRun, "_runFullName", runName); } catch { // Ignore. Not supported in all versions of Source if (logger != null) { logger(this, "Cannot set custom run name. Not supported by this version of Source"); } } } }