public static void Run() { if (Running) { if (!Task.HasExited) { AlreadyRunning(); return; } } String Executable = RunRegistry.GetCombined(); if (!System.IO.File.Exists(Executable)) { CantFind("executable", Executable); return; } String Model = RunRegistry.GetModel(); String Msg = ""; Msg += "<model> " + Model + " </model>"; Task = new Process(); Task.StartInfo.FileName = Executable; Task.StartInfo.Arguments = AddQuotes(Msg); if (GeneralRegistry.GetWaitForExit()) { State.WaitForExit(); } bool OK = Task.Start(); /* Task.Start() starts the named task, but also associates * the task with the process object. You can invoke * WaitForExit() only after this association has been made. * If invoked to early, an exception is thrown. */ if (GeneralRegistry.GetWaitForExit()) { Task.WaitForExit(); State.HaveExit(); } if (!OK) { FailedToStart(Executable); Running = false; } else { Running = true; } }
public Options_Solving_Combined() { ModuleName = new Label(); ModuleName.Parent = this; ModuleName.Location = new Point(10, 10); ModuleName.AutoSize = true; RefreshLabel(RunRegistry.GetCombined()); new Note(this, 10, 35, "Edit"); Edit = new TextBox(); Edit.Parent = this; Edit.Location = new Point(40, 33); Edit.Size = new Size(240, 20); Edit.Text = RunRegistry.GetCombined(); Button Apply = new Button(); Apply.Parent = this; Apply.Location = new Point(290, 33); Apply.Size = new Size(60, 20); Apply.Text = "Apply"; Apply.Click += new EventHandler(OnApply); Button Browse = new Button(); Browse.Parent = this; Browse.Location = new Point(360, 33); Browse.Size = new Size(60, 20); Browse.Text = "Browse"; Browse.Click += new EventHandler(OnBrowse); Button Reset = new Button(); Reset.Parent = this; Reset.Location = new Point(430, 33); Reset.Size = new Size(60, 20); Reset.Text = "Reset"; Reset.Click += new EventHandler(OnReset); Label DefaultName = new Label(); DefaultName.Parent = this; DefaultName.Location = new Point(10, 60); DefaultName.AutoSize = true; DefaultName.Text = "Default Name : " + RunRegistry.GetDefaultCombined(); }