因此,我们的应用程序有一个很好的中央异常处理程序,其中记录了异常的详细信息,向用户显示了通用窗口,并以一种优雅的方式进行了关闭。但是,我们现在有一个第三方组件,不时(并且可能是出于完全正当的理由)调用Environment.FailFast。这使我们的应用程序脱离水面,对我们的用户来说看起来非常糟糕。有没有办法以优雅的方式处理Environment.FailFast?
答案 0 :(得分:4)
我看不出办法,根据MSDN中的各种条目,这是一个硬终止的过程。您要创建的任何代码都将驻留在该过程中。它也不会运行finally块或任何挂起的终结器,所以我猜测不会提供任何事件或挂钩以允许自定义代码运行。在某种程度上这是有道理的,否则它可能不会“快速”失败,并且它只会在极端过程损坏的情况下使用。
http://msdn.microsoft.com/en-us/library/dd289241
我看到两个三个选项:
来自MSDN:
此方法终止进程而不运行任何活动进程 尝试/终止块或终结器。
FailFast方法将消息字符串写入Windows 应用程序事件日志,然后创建应用程序的转储 终止当前进程。消息字符串也包含在中 向Microsoft报告错误。
使用FailFast方法而不是Exit方法来终止你的 申请状态如果损坏无法修复, 并执行您的应用程序的try / finally块和终结器 将破坏计划资源。
答案 1 :(得分:2)
您可以在新流程中执行第三方代码。
执行此操作的一种简单方法是将第三方代码包装在可执行文件中,而不是使用Process.Start启动它。
请注意,我无法找到FailFast后错误级别的文档。当我测试它时,我得到的值是-2146232797
...