Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
polsok
3 / 3 / 6
Регистрация: 20.03.2011
Сообщений: 349
1

как запустить одновременно и отслеживать несколько процессов?

05.09.2013, 16:19. Просмотров 1586. Ответов 6
Метки нет (Все метки)

вот такой например процесс
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//создаем новый процесс, который будет работать с консолью
                pr = new Process();
                //задаем имя запускного файла
                pr.StartInfo.FileName = utilityName;
                //задаем аргументы для этого файла
                pr.StartInfo.Arguments = arguments;
                //отключаем использование оболочки, чтобы можно было читать данные вывода
                pr.StartInfo.UseShellExecute = false;
                //перенаправляем данные вовода
                pr.StartInfo.RedirectStandardOutput = true;
                //задаем кодировку, чтобы читать кириллические символы
                pr.StartInfo.StandardOutputEncoding = Encoding.GetEncoding(866);
                //запрещаем создавать окно для запускаемой программы                
                pr.StartInfo.CreateNoWindow = true;
                //подписываемся на событие, которые возвращает данные
                pr.OutputDataReceived += new DataReceivedEventHandler(sortOutputHandler);
                //включаем возможность определять когда происходит выход из программы, которую будем запускать
                pr.EnableRaisingEvents = true;
                //подписываемся на событие, когда процесс завершит работу
                pr.Exited += new EventHandler(whenExitProcess);
                //запускаем процесс
                pr.Start();
                //начинаем читать стандартный вывод
                pr.BeginOutputReadLine();
и таких процессов надо запустить одновременно около 10 штук, как лучше всего поступить?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2013, 16:19
Ответы с готовыми решениями:

Как запустить несколько потоков одновременно?
Здравствуйте, не могу решить проблему с объявлением количества потоков, нужно чтобы запускалось...

Как обновить одновременно несколько полей в SQL?
Я хочу чтоб - если в массиве (array) у всех элементов статус равно 1, тогда поменять все их статусы...

Как одновременно добавить несколько строк в таблицу Access?
А возможно одновременно добавить несколько строк в таблицу Access? например как при вставке в...

Создать и запустить одновременно несколько потоков
Всем привет) Необходимо создать несколько потоков и запустить их одновременно (без помощи циклов)....

Как запустить метод класса одновременно в разных потоках?
Как запустить метод класса одновременно в разных потоках? Будет ли конфликт между ними, или создать...

6
ksk
619 / 487 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
05.09.2013, 16:36 2
Ну я бы так поступил:

1) Создать класс, который умеет это делать и помнит ссылку на процесс;
2) Создать список объектов такого класса, сконфигурить их;
3) Перебрать запустить;
4) периодически перебирать, вызывать pr.Refresh(), проверять Alive, и в трукаче смотреть другие свойства.
1
polsok
3 / 3 / 6
Регистрация: 20.03.2011
Сообщений: 349
05.09.2013, 17:26  [ТС] 3
ksk, допустим у тебя есть массив строк(process1, process2...)
как бы ты создал новый процесс с именем одной из строк?
C#
1
Process ArrayProcess[x] = new Process();
не катит
0
ksk
619 / 487 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
05.09.2013, 18:01 4
Конечно не катит.
Ты слишком упростил сказанное мной.

Где класс - обёртка над процессом?
Где конфигурение класса тем, что надо запускать в процессах?
1
Grishaco
437 / 361 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
05.09.2013, 20:32 5
Цитата Сообщение от polsok Посмотреть сообщение
utilityName
файл который вы запускаете ваш? Т.е. Вы его писали?
1
Psilon
Master of Orion
Эксперт .NET
6040 / 4894 / 903
Регистрация: 10.07.2011
Сообщений: 14,492
Записей в блоге: 5
Завершенные тесты: 4
05.09.2013, 22:48 6
polsok,
C#
1
2
3
4
5
6
7
var list = new List<Process>();
for(.....)
{
   //здесь ваш код
   list.Add(pr);
}
//У нас есть список процессов, можем с ним делать что угодно.
все.
1
polsok
3 / 3 / 6
Регистрация: 20.03.2011
Сообщений: 349
06.09.2013, 11:12  [ТС] 7
Grishaco, нет не мой процесс
0
06.09.2013, 11:12
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2013, 11:12

Как проиграть несколько звуков одновременно?
Я всегда использовал Sound Player для проигрывания звуков, до сегодняшнего дня, когда мне...

Как найти обойти несколько процессов и убить активный?
Всем привет. Как обойти несколько процессов и если кто то из них активен убить? Нашел такой код, но...

Подскажите, как научить TcpListener слушать несколько портов одновременно?
Подскажите, как научить TcpListener слушать несколько портов одновременно?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru