0

コンピューターで実行されるコンソールアプリケーションがあります。アプリケーションが例外をスローしたときに、アプリケーションを再起動したいと思います。どうすればこれを達成できますか?

4

1 に答える 1

1

プロセスが生きているかどうかを n 秒ごとにチェックするタイマーをインスタンス化できます。たとえば、次のように i 関数を記述して、プロセスが生きているかどうかを確認できます。

 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
     }
        }
于 2011-11-16T14:47:33.380 に答える