【问题标题】:Caliburn.Micro's OnUnhandledException not called未调用 Caliburn.Micro 的 OnUnhandledException
【发布时间】:2017-11-05 08:32:52
【问题描述】:

我已经在我的引导程序中覆盖了 OnUnhandledException,但在以下情况下它不会被调用:

public class Foo : IHandle<Bar> {
    public void Handle(Bar message) {
        // Do something that requires UI thread
    }

    public void DoSomething() {
        eventAggregator.PublishOnBackgroundThread(new Bar());
    }
}

调用handle方法时会抛出InvalidOperationException: The calling thread must be STA, because many UI components require this.,因为它是在后台线程而不是UI线程上执行的:

OnUnhandledException 在我的引导程序中从未捕获到该异常。 Application.DispatcherUnhandledException 事件处理程序也不会捕获它。

如何创建一个通用的异常处理程序来捕获这些类型的异常,而不必在任何地方实现 try/catch?

【问题讨论】:

    标签: c# exception-handling caliburn.micro


    【解决方案1】:

    根据Caliburn.Micro GitHub,这似乎是一个已知问题,并且是他们正在积极解决的问题。你不妨加入那边的对话,看看有没有暂时的权宜之计。

    【讨论】:

      【解决方案2】:

      看起来这是background threads and WPF 没有进入事件处理程序的问题。

      链接的问题有一个解决方案,但这可能是我们 (Caliburn.Micro) 可以提供帮助的问题。

      【讨论】:

      • 不幸的是,AppDomain.CurrentDomain.UnhandledException 在这个例子中也没有被调用。不过,我很想看看你(Caliburn.Micro)能提供什么帮助:)
      • 它很可能会尝试将所有各种异常处理程序集中到一个地方。但是,如果这个异常只是被线程池吞没,那么抱歉,这将无济于事。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-12
      • 2016-07-02
      • 1970-01-01
      相关资源
      最近更新 更多