我正在使用System.Diagnostics.Process启动外部进程.这是批处理作业的一部分,所以如果一个进程崩溃,我想处理它,让其余进程继续.
目前正在发生的事情是Windows弹出一个对话框,告诉我该程序已经崩溃,只有在我解雇后才会手动退出该进程.
根据这个问题,Process.Responding属性仅适用于具有UI的程序(我正在启动的进程是一个控制台应用程序).
我还查看了进程提供的各种事件,但没有一个事件在崩溃时被触发.
有任何想法吗?
有没有办法确定我的程序启动的进程已崩溃?目前,我发现的解决方案是查看Process.ExitCode和检查值:
this.STProcess = Process.Start(this.CreateProcessStartInfo());
this.STProcess.WaitForExit();
if (STProcess.ExitCode != 0)
{
//raise error event...
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更优雅(和准确)的方式来做到这一点?
我更喜欢C#中的答案,并且使用P/Invoke也很好.
PS - 我需要在Windows XP/Vista/7上工作