Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从c#调用.exe时崩溃,线程停止_C#_Multithreading_Popupwindow - Fatal编程技术网

从c#调用.exe时崩溃,线程停止

从c#调用.exe时崩溃,线程停止,c#,multithreading,popupwindow,C#,Multithreading,Popupwindow,我正在像这样启动一个.exe ProcessStartInfo start = new ProcessStartInfo(); start.Arguments = stuff; start.FileName = "test.exe"; try{ using (Process proc = Process.Start(start)) { proc.WaitForExit(); ... } } catch { ...} 从一根线。问题是有时“

我正在像这样启动一个.exe

ProcessStartInfo start = new ProcessStartInfo();
start.Arguments = stuff;
start.FileName = "test.exe";
try{
    using (Process proc = Process.Start(start))
    {
            proc.WaitForExit();
    ...
    }
}
catch
{
...}
从一根线。问题是有时“test.exe”会崩溃,打开一个弹出窗口说

“应用程序崩溃等等..在internet上寻找解决方案等等”

有“test.exe”崩溃,这是意料之中的事,但我需要的是关闭弹出窗口以释放线程,或者首先“捕获”exe崩溃

代码中的try catch无法捕获正在崩溃的exe

你能帮忙吗?
谢谢

据我所知,您无法通过应用程序实现这一点。这是一个系统级设置。有关如何禁用对话框的详细信息,请参见eg,但请注意,必须针对每台机器进行设置,并影响所有程序。

对于Windows Vista和更高版本,可以使用名为的功能。除此之外,应用程序还可以注册处理程序过程,WER(Windows错误报告)会在此类事件中调用该处理程序。这种方法可以做某些事情。例如,您可以编写堆栈跟踪,当应用程序停止响应(AppHang)时,该跟踪通常很有用

请注意,该函数必须正常运行,即遵循某些规则做什么,什么时候做,什么不做,否则WER将终止此恢复线程。我强烈建议调查MSDN


顺便说一下,您的描述缺少确切的崩溃消息,您应该添加该信息。所谓的“崩溃”有很多可能的原因。如果没有这些信息,并给出上面的代码,这有点猜测。

要检测崩溃,您需要检查退出代码。@DarrenKopp崩溃的程序会在窗口“此程序已崩溃”弹出窗口出现之前返回退出代码吗?嗯,
WaitForExit
在程序退出之前不会运行,我不确定这是在消息发生之前还是之后发生的,但我猜是在消息发生之后(因为您可以通过该消息附加一个调试器),那么像这样监视该过程如何:很好,Jason。它仍然不能完全解决问题,但总比什么都没有好。