【问题标题】:WPF exception handling when launched from WinForms从 WinForms 启动时的 WPF 异常处理
【发布时间】:2010-06-01 20:02:53
【问题描述】:

所以我看到了这篇关于 WPF 异常处理的有趣文章: http://srtsolutions.com/public/item/251263

它通过在 xaml 节点中声明 DispatcherUnhandledException 处理程序来工作。

但是如果 WPF 窗口是从 win forms 应用程序启动的呢?

在哪里可以声明通用异常处理程序?

问题是当 WPF 崩溃时,它会导致整个 WinForms 应用程序崩溃。

*编辑 如果我没有直接启动 WPF 窗口,而是启动了一个定义了启动窗口的“应用程序”,该怎么办?这可能/可取吗?

【问题讨论】:

    标签: wpf winforms


    【解决方案1】:

    将您的处理程序附加到 <obj>.Dispatcher.UnhandledException 事件,其中 <obj> 是任何 WPF 控件,或在同一线程上创建的另一个 DispatcherObject

    【讨论】:

    • 有什么方法可以详细说明如何将处理程序实际分配给调度程序? UnhandledException 并不是它的真正属性..
    • 不是属性,而是事件。使用通常的+= 语法。查看文档:msdn.microsoft.com/en-us/library/…
    • 选词不当,我的意思是,该事件在我的 Windows 调度程序对象上不可用。
    • 怎么样?我的意思是,你怎么知道它不可用?
    • 其实它就在那里,我的错。
    【解决方案2】:

    我相信 Windows 窗体的传统“全局”异常处理程序将适用于此:

    将线程异常钩在 Main 的第一行:

    Application.ThreadException += new ThreadExceptionEventHandler(new ThreadExceptionHandler().ApplicationThreadException); 
    

    【讨论】:

    • 谢谢,实际上已经实现了。但任何 WPF 异常仍然会破坏容器 winforms 应用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    相关资源
    最近更新 更多