我正在開發包含其他團隊開發的模塊的應用程序,並使用MEF託管它。 問題是,當託管模塊有異常時,它會摺疊我的應用程序。避免應用程序中的模塊出現異常
顯而易見的解決方案是,託管模塊的開發團隊將捕獲所有的異常,但沒有發生,所以我必須確保自己。
我的思路:
1)創建2個分離GUI線程。可能嗎 ?
2)將託管模塊作爲分離的.exe文件運行,但以某種方式託管在我的應用程序中。
任何幫助將不勝感激。
我正在開發包含其他團隊開發的模塊的應用程序,並使用MEF託管它。 問題是,當託管模塊有異常時,它會摺疊我的應用程序。避免應用程序中的模塊出現異常
顯而易見的解決方案是,託管模塊的開發團隊將捕獲所有的異常,但沒有發生,所以我必須確保自己。
我的思路:
1)創建2個分離GUI線程。可能嗎 ?
2)將託管模塊作爲分離的.exe文件運行,但以某種方式託管在我的應用程序中。
任何幫助將不勝感激。
我認爲最好的辦法就是建立一些測試,以驗證您的模塊從你的目的的其他團隊工作中使用。
除了這種明顯但費時的方法之外,您還可以將事件處理程序附加到Application.DispatcherUnhandledException,並正確處理導入模塊中的異常。您應該能夠在事件args的Exception.Source屬性中找到異常的來源。
看到我對@DHN的答案 – Erez 2011-03-03 09:26:10
謝謝,但DispatcherUnhandledException僅處理Gui線程中的異常,而不處理後臺線程中的異常。 (這對大多數例外情況都有好處,但不適用於所有情況) – Erez 2011-03-03 09:25:34
那麼請遵循我的第二條建議。處理在另一個模塊中啓動的線程異常不應該是您的任務。如果你一直在解決這些問題,你可能會在幾個月內遇到一些嚴重的問題。不要治癒症狀,消除原因! – DHN 2011-03-03 09:31:34
提供了替代解決方案。看我的編輯。 – DHN 2011-03-03 09:36:01