我有WPF主機應用程序和外接也WPF如下所述它返回UI:外接程序(MAF):運行在單獨的進程
[鏈接] http://msdn.microsoft.com/en-us/library/bb909849%28v=vs.110%29.aspx
我想知道這是否是連可能會激活WPF AddIn作爲外部進程:它看起來像WPF加載項只被認爲是與AppDomain隔離使用,這對我們的應用程序來說不夠好。如果AddIn因任何原因崩潰,我們不能允許主機一直崩潰。我們希望我們的主機應用程序即使在加載的AddIn崩潰時也能運行。
我知道我們可以通過下面的System.AddIn
實現這一目標:
//Activate the selected AddInToken in a new
//application domain with the Internet trust level.
Calculator CalcAddIn = selectedToken.Activate<Calculator>(new AddInProcess(), AddInSecurityLevel.fulltrust);
但我有WPF加載項不System.AddIn
因爲我們的加載項有WPF UI組件。
我可以在新的應用程序域激活WPFAddIn如下:
//Activate the selected AddInToken in a new
//application domain with the Internet trust level.
Calculator CalcAddIn = selectedToken.Activate<Calculator>(AddInSecurityLevel.Internet);
我無法獲得有關處理與WPF加載項這種情況下,任何任何先進的最新信息。是否有任何可能的例子,如何在單獨的進程中激活WPF AddIn或捕獲主機中未處理的異常。基本上我不能讓主機在addIn崩潰時死掉。 我確實按照下面的鏈接,但事實證明,線程是非常古老的,沒有最新的信息。
如果我能處理的主機將被罰款過例外。讓我解釋我的問題:
我有WPF主機「A」。有WPF AddIn「B」。
我在主機「A」中加載了AddIn「B」。 AddIn「B」有一個點擊按鈕。當用戶點擊一個按鈕時,事件將在AddIn「B」中被觸發。在這種情況下,沒有嘗試捕獲可用的,並從該事件拋出一些空的異常。這個未處理的異常導致我的主機(WPF應用程序)崩潰。
我正在尋找一個解決方案,我可以在主機「A」中處理這個異常,卸載AddIn「B」並繼續主機而沒有任何崩潰。
我試過用AddInSecurityLevel.FullTrust
以及AddInSecurityLevel.Internet
加入。
任何提示或示例都會有所幫助。
而是將所有這些複雜性(MAF),你可以監視加載項崩潰您的應用程序,如果他們崩潰往往黑名單他們。然後允許用戶啓用不穩定的插件。這是MS OFFICE的方法(http://office.microsoft.com/en-us/outlook-help/enable-or-disable-add-ins-in-office-programs-HA010034127.aspx#BM1)。 –
嗨Panos-我已經使用MAF(WPF AddIn)管道方式來加載插件。有沒有什麼辦法來防止在這個MAF-WPF AddIn方法中崩潰。因爲我們無法在單獨的進程中運行WPF AddIns。 – user2506411
AppDomain隔離不能保證這一點。在某些情況下,它可以但不完全。看看http://stackoverflow.com/a/16438141/850119。在你的情況當然你不能有進程隔離。但其餘的適用。 –