我正在推出像这样的.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。
你可以帮忙吗? 谢谢答案 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。
顺便说一句,您的描述缺少确切的崩溃消息,您应该添加该信息。什么可能的原因导致什么叫做"崩溃"。没有那些信息,并且给出了上面的代码,它有点猜测。