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?
不幸的是'AppDomain.CurrentDomain.UnhandledException'在本例中没有被调用。我会非常感兴趣的是看到你(Caliburn.Micro)可以提供哪些帮助,尽管:) – GTHvidsten
很可能它会试图将所有各种异常处理程序汇集到一个地方。但是,如果这个异常正在被线程池所吞噬,那么在这里就不会有帮助。 –