/// <summary> /// Удаление из списка завершенного процесса /// Выполняется в отдельном потоке /// </summary> /// <param name="obj"></param> static void WaitUntilProcessEnd(object obj) { ProcessPlan process = (ProcessPlan)obj; process.MyProcess.WaitForExit(); processes.Remove(process); Console.WriteLine("Процесс " + Thread.CurrentThread.Name + " закончил работу"); }
static void Main(string[] args) { for (int i = 0; i < 3; i++) { string line = "ConsoleApp" + (i + 1); line = "..\\..\\..\\" + line + "\\bin\\Debug\\" + line; ProcessPlan processPlan = new ProcessPlan(line); processPlan.TimeSlot = timeSlotDefault; processPlan.IsStarted = false; processPlan.Thread = new Thread(new ParameterizedThreadStart(WaitUntilProcessEnd)); processPlan.Thread.Name = (i + 1).ToString(); processes.Add(processPlan); } PrintTimeSlots(); // Запуск потока, которвый контролирует программные модули threadControl = new Thread(new ThreadStart(ControlProcess)); threadControl.Start(); // Запуск потока, который контролирует событие изменения кванта threadTimeSlot = new Thread(new ThreadStart(ChangeTimeSlot)); threadTimeSlot.Start(); }