Beispiel #1
0
        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");
        }
Beispiel #2
0
        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");
                    }
                }
            }
        }