2011-11-16 3 views
0

내 컴퓨터에서 실행되는 콘솔 응용 프로그램이 있습니다. 응용 프로그램이 예외를 throw하면 응용 프로그램을 다시 시작하려고합니다. 이것을 어떻게 할 수 있습니까?관리 실행 프로세스

당신은 내가 좋아하는 기능은 쓸 수 있습니다 예를 들어, 프로세스가 살아있는 경우 매 n 초를 확인 타이머를 인스턴스화 할 수
+2

이를 바꿔과 ... – Tudor

+0

더 많은 세부 사항을 제공하십시오 _ "때 응용 프로그램이 예외를 throw하고 응용 프로그램을 다시 시작하려고합니다. " 당신은 예외를 잡으려고합니다. 그리고 아니, 당신은'main()'에서 그렇게하지 않습니다. – CodeCaster

답변

1

하여 프로세스가 살아 있는지 확인하려면 다음 타이머의

public static bool ProcessExist(string processname) 
     { 
      Process[] aProc = Process.GetProcessesByName(processname); 
      return (aProc.Length > 0); 
     } 

모든 틱 당신은 프로세스가 살아 있는지 아닌지를 확인할 수 있습니다. 그렇지 않으면 다시 시작할 수 있습니다.

또 다른 방법이 될 GET에 대한 ManagementEventWatcher 이벤트마다 해고 사용할 수있는 컴퓨터의 처리 정지, 그래서 예를 들면 :

ManagementEventWatcher stopWatchProcess = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStopTrace")); 
       stopWatchProcess.EventArrived += new EventArrivedEventHandler(stopWatchProcess_EventArrived); 
       stopWatchProcess.Start(); 


private void stopWatchProcess_EventArrived(object sender, EventArrivedEventArgs e) { 
      string processName = (string)e.NewEvent.Properties["ProcessName"].Value; 
      if(processName == "yourprocess.exe") { 
       //Do Something 
    } 
     }