2011-11-16 17 views
0

我有一個在我的電腦上運行的控制檯應用程序。當應用程序引發異常時,我想重新啓動應用程序。我怎樣才能做到這一點?管理運行過程

+2

請重新表述這一點,並提供更多的細節... – Tudor

+0

_」當應用程序拋出異常,我想重新啓動應用程序。「_不,你不知道。你想要捕捉異常。不,你不會在'main()'中這樣做。 – CodeCaster

回答

1

您可以實例化檢查每n秒,如果這個過程是活的計時器,例如,你可以寫我的功能就像下面的驗證過程是否還活着:

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

每一個計時器的滴答你可以檢查過程是否存在,如果不存在,你可以重新啓動它。

另一種方法可以是使用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 
    } 
     } 
相關問題