2016-07-12 3 views
2

У меня есть родительское приложение, которое запускает несколько экземпляров дочернего приложения. Я хочу, чтобы отключить «Start'button» против каждого из этих процессов, если процесс будет запущен.C# Как идентифицировать элемент набора процессов с тем же именем?

Получение списка запущенных экземпляров приложения достаточно просто (Process.GetProcessesByName («Боб»)) - то, что мне нужно, - это цикл через список возвращенных процессов (одноименное имя) и определить, какие экземпляры запущены.

У экземпляров есть переменная public, называемая ClientId - как я могу прочитать ClientId процессов, чтобы увидеть, какие из них запущены?

Есть ли лучший подход?

+2

Если родительское приложение порождает детей, то я думаю, что он должен поддерживать их сам, например, сохраняя PID при запуске его в словарь с помощью вашего клиника ClientId. Затем вы можете ['GetProcessById()'] (https://msdn.microsoft.com/en-us/library/system.diagnostics.process.getprocessbyid (v = vs.110) .aspx), и словарь сообщает вам какой из них. В противном случае, похоже, вы хотите [Interprocess Communication] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa365574 (v = vs.85) .aspx). – Quantic

ответ

1

Если вы начинаете процессы с Process.Start(fileName), вы можете сохранить объект процесс возвращается:

Process myProcess = Process.Start(fileName); 

процессы имеют HasExited свойство, которое вы можете проверить.

Смежные вопросы