【问题标题】:WPF AppDomain UnhandledException handler timeoutWPF AppDomain UnhandledException 处理程序超时
【发布时间】:2013-12-25 04:39:32
【问题描述】:

AppDomain 有未处理的异常时,您可以处理AppDomain.CurrentDomain.UnhandledException 事件。

但是,您无法阻止 AppDomain 关闭。你不能只是阻塞线程。最终 AppDomain 会将其关闭。

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

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

【问题讨论】:

  • 我正在做一个实验,似乎没有超时!这里真的可以无限循环吗?
  • 一个 WPF 应用程序使用不同的 CLR 主机,它的卸载超时确实是 INFINITE。

标签: c# .net wpf


【解决方案1】:

我不知道如何为 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 处理程序上,我们只对磁盘进行简单的日志记录

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-31
    • 2012-07-22
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    相关资源
    最近更新 更多