WPF应用程序域未处理异常处理程序超时

3
当一个 AppDomain 发生未处理的异常时,您可以处理 AppDomain.CurrentDomain.UnhandledException 事件。
但是,您无法阻止 AppDomain 关闭。您不能仅仅阻塞线程。最终,AppDomain 将关闭它。
在 ASP.NET 中,如果您注册了对象 (IRegisteredObject),AppDomain 将给予您的代码 30 秒的运行时间。
有人知道标准 WPF 应用程序的超时时间吗?

我正在运行一个实验,看起来好像没有超时!我真的可以在这里运行一个无限循环吗? - Haacked
一个WPF应用程序使用不同的CLR主机,它的卸载超时确实是无限的。 - Hans Passant
1个回答

0

我不知道如何为DispatcherUnhandledException处理程序设置超时时间。

但是,如果应用程序在出现未处理的异常时使用Environment.ExitApplication.Exit终止了吗?

引用:http://www.dev102.com/2008/06/24/how-do-you-exit-your-net-application/

Environment.Exit - 来自MSDN:终止此进程并向底层操作系统提供指定的退出代码。这是在使用控制台应用程序时调用的代码。

Application.Exit - 来自MSDN:通知所有消息泵必须终止,然后在处理完消息后关闭所有应用程序窗口。如果您已经调用了Application.Run(WinForms应用程序),则使用此方法停止所有运行中的消息循环,并关闭应用程序的所有窗口。关于此方法还有一些其他问题,请阅读MSDN页面。

对于WPF,如果未处理的异常将使用Environment.Exit(而不是Application.Exit)导致应用程序崩溃-我怀疑应用程序在所有线程完成之前不会退出。如果是这样,那么您可以尝试通过DispatcherUnhandledException处理程序中的线程来执行所需操作。

您能否告诉我这也是行为吗?我很好奇。我们从未遇到过问题,因为在WPF DispatcherUnhandledException处理程序中,我们只进行简单的磁盘日志记录。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接