我有一个在计算机上运行的控制台应用程序。当应用程序抛出异常时,我想重新启动应用程序。我如何才能做到这一点呢?
发布于 2011-11-16 22:47:33
您可以实例化一个计时器,该计时器每隔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
}
}https://stackoverflow.com/questions/8153358
复制相似问题