我已經覆蓋了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
很可能它會試圖將所有各種異常處理程序彙集到一個地方。但是,如果這個異常正在被線程池所吞噬,那麼在這裏就不會有幫助。 –