Выяснение того, какой System.Diagnostics.Process завершен - PullRequest
2 голосов
/ 09 апреля 2009

Я порождаю новые процессы в своем приложении C # с помощью System.Diagnostics.Process, как это:

void SpawnNewProcess
{
    string fileName = GetFileName();
    System.Diagnostics.Process proc = new System.Diagnostics.Process();
    proc.StartInfo.FileName = fileName;
    proc.Start();
    proc.Exited += new EventHandler(ProcessExited);
    proc.EnableRaisingEvents = true;
}          

private void ProcessExited(Object source, EventArgs e)
{ 

}

Пользователь может свободно создавать столько процессов, сколько ему нравится - теперь вопрос: я в функции ProcessExited, как мне узнать, какой из процессов завершил работу?

Пример в MSDN просто показывает, как использовать переменную-член для этого - но это не будет работать с большим количеством процессов.

Есть идеи, как узнать, какой процесс только что завершился?

Ответы [ 2 ]

6 голосов
/ 09 апреля 2009

Вы получите объект Process как source в вашем обработчике событий. source.Id будет иметь PID процесса. Если вам нужна дополнительная информация, вы можете сохранить таблицу поиска PID и связанных свойств в качестве переменной-члена.

Обратите внимание, что вам придется разыграть source до Process, прежде чем вы сможете получить доступ к его членам. Например:

private void ProcessExited(Object source, EventArgs e)
{ 
    var proc = (Process)source;
    Console.WriteLine(proc.Id.ToString());
}
4 голосов
/ 09 апреля 2009

Параметр source, вероятно, будет процессом, который завершился. Вам придется разыграть его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...