2010-12-16 2 views
8

은 ID 1234의 프로세스가 있다고 가정합니다.이 프로세스는 응용 프로그램이 실행되기 전에 실행 중입니다. 프로세스 종료와 관련된 문제

 Process app = Process.GetProcessById(1234); 
     MessageBox.Show(app.MainWindowTitle); 
     app.Exited += this.methodShowsMessageBox; 

지금, 내가 컴파일하고 응용 프로그램을 실행할 때,이 과정을 얻고 메인 창 제목을 보여줍니다

:

나는이 코드를 가지고있다. 그러나 내가 1234 프로세스를 닫을 때, app.Exited는 nto fire를 수행한다. 왜 이럴까? 어떻게 내가 발사 할 수 있을까?

답변

17

이 이벤트가 발생하기 전에 documentation에는 EnableRaisingEventstrue으로 설정해야한다는 점에 유의하십시오.

+0

야후는 내 하루를 저장했습니다! – TheVillageIdiot

3

기본적으로 성능상의 이유로 Process 클래스는 이벤트를 발생시키지 않습니다. Process 객체가 Exited를 감시하고 해당 이벤트를 발생 시키려면 EnableRaisingEvents 속성을 true로 설정해야합니다.

프로세스가 종료되는 데 걸리는 시간은 입니다. EnableRaisingEvents가 true 인 경우 관련 프로세스가 종료되면 Exited 이벤트가 발생합니다. 해당 시간에 Exited 이벤트에 대해 지정한 프로 시저.

때때로 응용 프로그램이 프로세스를 시작하지만 의 종료를 알릴 필요가 없습니다. 예를 들어 응용 프로그램에서 메모장을 시작하여 사용자가 텍스트 을 편집 할 수 있도록 허용하지만 메모장 응용 프로그램 을 더 이상 사용하지 마십시오. 과 관련하여 이 아니기 때문에 은 프로세스가 종료 될 때 알림을받지 않도록 선택할 수 있습니다. EnableRaisingEvents를 false로 설정하면 시스템 리소스가 저장됩니다.