2011-03-03 50 views
3

我正在開發包含其他團隊開發的模塊的應用程序,並使用MEF託管它。 問題是,當託管模塊有異常時,它會摺疊我的應用程序。避免應用程序中的模塊出現異常

顯而易見的解決方案是,託管模塊的開發團隊將捕獲所有的異常,但沒有發生,所以我必須確保自己。

我的思路:

1)創建2個分離GUI線程。可能嗎 ?

2)將託管模塊作爲分離的.exe文件運行,但以某種方式託管在我的應用程序中。

任何幫助將不勝感激。

enter image description here

回答

0

首先您應該執行Application.DispatcherUnhandledException事件,如需更多詳細信息,請點擊here

這樣做後,你應該與其他團隊談談,以提高其模塊的健壯性。

編輯:

或者你也可以按照這個approach。但我會努力提高魯棒性。

+0

謝謝,但DispatcherUnhandledException僅處理Gui線程中的異常,而不處理後臺線程中的異常。 (這對大多數例外情況都有好處,但不適用於所有情況) – Erez 2011-03-03 09:25:34

+0

那麼請遵循我的第二條建議。處理在另一個模塊中啓動的線程異常不應該是您的任務。如果你一直在解決這些問題,你可能會在幾個月內遇到一些嚴重的問題。不要治癒症狀,消除原因! – DHN 2011-03-03 09:31:34

+0

提供了替代解決方案。看我的編輯。 – DHN 2011-03-03 09:36:01

0

我認爲最好的辦法就是建立一些測試,以驗證您的模塊從你的目的的其他團隊工作中使用。

除了這種明顯但費時的方法之外,您還可以將事件處理程序附加到Application.DispatcherUnhandledException,並正確處理導入模塊中的異常。您應該能夠在事件args的Exception.Source屬性中找到異常的來源。

+0

看到我對@DHN的答案 – Erez 2011-03-03 09:26:10

相關問題