我有一个在我的计算机上运行的控制台应用程序。当应用程序抛出异常时,我想重新启动应用程序。我怎样才能做到这一点?
问问题
196 次
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 回答