C# 在winforms应用程序中快速失败

C# 在winforms应用程序中快速失败,c#,winforms,C#,Winforms,在.NET应用程序中,如果出现致命异常(例如OOM),我会快速失效。我通过调用applicationthreadexception事件处理程序中的Environment.Exit()调用finally blocks(可能是Environment.Failfast(),调用finally blocks,我使用两者中的任何一个)来实现这一点 这是快速失败的正确方法吗 感谢环境。Failfast()不运行终结器,它将事件放入Windows日志并生成一个小型转储。您不想用小型转储文件填充客户机,它们不是

在.NET应用程序中,如果出现致命异常(例如OOM),我会快速失效。我通过调用applicationthreadexception事件处理程序中的Environment.Exit()调用finally blocks(可能是Environment.Failfast(),调用finally blocks,我使用两者中的任何一个)来实现这一点

这是快速失败的正确方法吗

感谢

环境。Failfast()不运行终结器,它将事件放入Windows日志并生成一个小型转储。您不想用小型转储文件填充客户机,它们不是小文件。没有人会看他们


在OOM条件下防止终结器不是很有用,终结器不会分配更多内存。使用Environment.Exit()。或者干脆什么都不抓,因为它可以扔到任何地方,所以无论如何都很难抓住。如果您想投入更多精力,请修复代码,这样它就不会占用太多内存。

回答得好。我的应用程序并没有消耗太多内存,而且也没有需要这样一个catch块的编码异常。当你说很难理解时,你具体的意思是什么?不要编写你无法测试的代码。OOM可以删除任何使用新运算符的语句。你通常有很多。这使得它在实践中不可追踪。你不想用try/catch包装它们中的每一个,这很可怕。但是它们不都会传播到全局捕获(例如ApplicationReadException)吗?呃,我猜你在谈论AppDomain.UnhandledException?不确定除了记录异常之外,您还想在那里做什么。