2013-10-11 41 views
3

如果AppDomain有未处理的异常,则可以处理AppDomain.CurrentDomain.UnhandledException事件。WPF AppDomain UnhandledException处理程序超时

但是,您无法阻止AppDomain的关闭。你不能阻止线程。最终AppDomain会关闭它。

在ASP.NET中,如果您注册了对象(IRegisteredObject),则AppDomain将使您的代码运行30秒。

有谁知道标准WPF应用程序的超时时间是多少?

+0

我正在运行一个实验,它似乎没有超时!我真的可以在这里运行一个无限循环吗? – Haacked

+0

WPF应用程序使用不同的CLR主机,其卸载超时的确是无限的。 –

回答

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处理程序的问题,我们只做简单的日志记录到磁盘