如果AppDomain
有未处理的异常,您可以处理AppDomain.CurrentDomain.UnhandledException
事件。
但是,您无法阻止AppDomain
关闭。你不能只是阻止线程。最终,AppDomain将关闭它。
在ASP.NET中,如果您注册了对象(IRegisteredObject
),AppDomain
将为您的代码提供30秒的运行时间。
有谁知道标准WPF应用程序的超时是什么?
答案 0 :(得分:0)
我不知道如何为DispatcherUnhandledException处理程序设置超时
但是,应用程序是否以 Environment.Exit 或 Application.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处理程序中我们只进行简单的日志记录到磁盘