管理运行过程

时间:2011-11-16 14:35:58

标签: c# process-management

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

1 个答案:

答案 0 :(得分: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
     }
        }