2010-05-07 73 views
9

我擁有最近繼承的Outlook 2007插件,目前生產中存在一些問題,其中一些用戶正在週期性地並且看似隨機地禁用其加載項。沒有來自加載項的日誌,每個方法/事件調用附加代碼中都有try/catch(和eat)塊。我做了一些Google搜索,發現如果Outlook中存在未處理的異常,則Outlook會對此加載項進行「軟禁用」。Outlook 2007插件異常處理

從我所知道的是,沒有任何例外是從加載項中拋出的。我想要做的是1)在插件中創建某種全局異常處理程序,以確保所有異常都被捕獲。或者2)以某種方式聽取Outlook在註冊表中「禁用」加載項並讓該監聽器刪除Outlook設置的註冊表項。

我試圖通過以下做#1:

AppDomain.CurrentDomain.UnhandledException += AppDomain_UnhandledException; 
System.Windows.Forms.Application.ThreadException += Application_ThreadException;

但也取得了成功。

我意識到System.Windows.Forms.Application.ThreadException不一定適用於Outlook加載項,但我想知道爲什麼不嘗試它。

另外,我讀過Outlook啓動了一個單獨的AppDomain for Add-ins,所以我希望AppDomain.CurrentDomain能爲此工作。我寫了一些代碼故意拋出異常進行測試,無法進入這些事件中的任何一個,並且Outlook繼續禁用加載項。

任何幫助/見解將不勝感激。

回答

1

當Outlook Addin被禁用時,它會將加載行爲從3更改爲2.您可以從註冊表中檢查此加載行爲以確定是否禁用了Addin。

+0

@kapilg我認爲這是有價值的信息,所以我給它一個+1,但我正在尋找一種方法來防止任何未處理的異常冒泡起來,並從我的插件中首先禁用它。謝謝。 – Adam 2010-07-19 14:03:57