질문에 명확하지 않지만 다른 프로세스에서 시작한 프로세스를 모니터링하려고한다고 가정합니다. 즉, Process.Start()
을 사용하는 것은 의미가 없습니다.
Process.GetProcessByName()
을 사용하면 응용 프로그램 이름을 기반으로 실행중인 프로세스 목록을 얻을 수 있습니다.
그런 다음 the Exited
event을 사용하면 프로세스가 언제 종료되는지 확인할 수 있습니다 (EnableRaisingEvents
도 설정해야 함). 예를 들어 :
var processes = Process.GetProcessesByName(processName);
foreach (var process in processes)
{
Console.WriteLine("{0} running.", process);
process.Exited += (sender, e) => Console.WriteLine("{0} exited.", sender);
process.EnableRaisingEvents = true;
}
는 경쟁 조건이 있음을 유의하십시오 프로세스가 GetProcessesByName()
에 대한 호출 후 종료하지만 만약 당신이 이벤트 핸들러를 설정하기 전에 Exited
이벤트가 발생되지 않을 수 있습니다.
또 다른 문제점은 응용 프로그램이 언제 시작되는지 파악하는 것입니다. 내가 새로 시작한 프로세스를 모니터 할 수있는 것을 인식하지 못하기 때문에, 당신이 기대하는 대답을 얻을 때까지 반복적으로 GetProcessesByName()
에 전화해야한다고 생각합니다.
빠른 검색 : http://stackoverflow.com/questions/611094/async-process-start-and-wait-for-it-to-finish –