Exemplo n.º 1
0
        /// <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 + " закончил работу");
        }
Exemplo n.º 2
0
        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();
        }