C# 防止控制台应用程序的Windows错误对话框

C# 防止控制台应用程序的Windows错误对话框,c#,dialog,system,activation,C#,Dialog,System,Activation,我有一个.NET服务,它监视用Fortran编写的控制台应用程序的windows共享位置,启动它们,监视STDOUT和STDERR,并将输出复制回共享位置,由其他服务处理。一些实例写下了他们正在终止的输出,然后应用程序似乎被锁定(它从未终止)。我在本地计算机上运行了一个以相同输入失败的应用程序,发现了一个内存损坏错误,我假设是由于两次尝试释放相同内存而导致的。显示了一个windows错误对话框。我确定,即使我的服务将这些控制台应用程序作为无窗口应用程序运行,当Fortran控制台应用程序中出现错

我有一个.NET服务,它监视用Fortran编写的控制台应用程序的windows共享位置,启动它们,监视STDOUT和STDERR,并将输出复制回共享位置,由其他服务处理。一些实例写下了他们正在终止的输出,然后应用程序似乎被锁定(它从未终止)。我在本地计算机上运行了一个以相同输入失败的应用程序,发现了一个内存损坏错误,我假设是由于两次尝试释放相同内存而导致的。显示了一个windows错误对话框。我确定,即使我的服务将这些控制台应用程序作为无窗口应用程序运行,当Fortran控制台应用程序中出现错误时,它仍会继续“运行”,因为没有用户可以单击对话框

使用System.Diagnostics.Process,是否有任何方法可以防止Windows错误对话框?有没有一种方法可以在不进行全局注册表更改的情况下防止它?我不想在全球范围内关闭此行为


< P> >我可以通过Google解决这个问题,即用户1)应该编写适当的错误处理(不能在FORTRAN代码中自己做的事情),或者更改注册表(我认为是错误的,因为我不控制其他用户使用服务器的方式)。在Fortran程序中,或禁用Windows错误报告是唯一合适的选择。剩下的不多了,当Process.WaitForExit(int)超时时,只剩下一个粗糙的Process.Kill()。Hans,谢谢你的想法。这些都是模拟。有时它们会跑几个月。我想我希望有一种方法可以关闭特定进程的这种行为。这取决于“全局”的全局性:可以在注册表中为单个应用程序关闭它:对,在Fortran程序中使用SetUnhandledExceptionFilter()或禁用Windows错误报告是唯一合适的选择。剩下的不多了,当Process.WaitForExit(int)超时时,只剩下一个粗糙的Process.Kill()。Hans,谢谢你的想法。这些都是模拟。有时它们会跑几个月。我想我希望有一种方法可以关闭特定进程的这种行为。这取决于“全局”对您的全局性:它可以为注册表中的单个应用程序关闭: