Caliburn.Micro的OnUnhandledException不叫

Caliburn.Micro的OnUnhandledException不叫

问题描述:

我已经覆盖了OnUnhandledException在我的引导程序,但在以下情况下它不叫:Caliburn.Micro的OnUnhandledException不叫

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

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

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

在我的引导程序中,该例外从未被OnUnhandledException捕获。 Application.DispatcherUnhandledException事件处理程序也不会捕获它。

我该如何制作一个通用的异常处理程序,它也会捕获这些类型的异常,而无需在任何地方实现try/catch?

根据Caliburn.Micro GitHub看来,这是一个已知的问题,并且他们正在积极解决问题。你可能希望参加那里的谈话,看看目前是否有任何的解决方案。

看起来像这是background threads and WPF没有使它成为事件处理程序的问题。

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

+0

不幸的是'AppDomain.CurrentDomain.UnhandledException'在本例中没有被调用。我会非常感兴趣的是看到你(Caliburn.Micro)可以提供哪些帮助,尽管:) – GTHvidsten

+0

很可能它会试图将所有各种异常处理程序汇集到一个地方。但是,如果这个异常正在被线程池所吞噬,那么在这里就不会有帮助。 –