0

我有一个在我的计算机上运行的控制台应用程序。当应用程序抛出异常时,我想重新启动应用程序。我怎样才能做到这一点?

4

1 回答 1

1

您可以实例化一个 Timer,每隔 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 回答