从c#崩溃和线程调用.exe被停止

时间:2013-10-05 18:01:12

标签: 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
{
...}

来自一个帖子。问题是有时“test.exe”崩溃,打开一个弹出窗口说

“应用程序崩溃了等等......在互联网上寻找解决方案等等”

预计会出现“test.exe”崩溃,但我需要的是关闭弹出窗口以释放线程,或者首先“捕获”exe崩溃。

代码中的try-catch没有捕获崩溃的exe。

你可以帮忙吗? 谢谢

2 个答案:

答案 0 :(得分:2)

据我所知,您无法从您的应用程序中实现此目的。这是一个系统级设置。有关如何禁用对话框的详细信息,请参阅例如How do I disable the 'Debug / Close Application' dialog on Windows Vista?,但请注意,必须为每台计算机设置并影响所有程序。

答案 1 :(得分:0)

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

请注意,该函数必须表现得很好,即遵循某些规则做什么,何时做以及不做什么,否则WER将终止此恢复线程。我强烈建议您查看MSDN。

顺便说一句,您的描述缺少确切的崩溃消息,您应该添加该信息。什么可能的原因导致什么叫做"崩溃"。没有那些信息,并且给出了上面的代码,它有点猜测。