Outlook 2007 加载项异常处理

9
我有一个Outlook 2007 Add-in,最近我接手了这个工作。现在的情况是,在生产环境下,有些用户会不定期地发现他们的Add-in被停用了。在Add-in中没有任何日志,并且在每个方法/事件调用到add-in代码时都设置了try/catch块来消耗异常。我做了一些谷歌搜索,发现如果有未处理的异常抛出到Outlook,Outlook就会对Add-in进行"软停用"。
据我所知,从Add-in中没有抛出任何异常。我的想法要么是 1) 在Addin中创建某种全局异常处理程序,以确保捕获所有异常。或者2) 以某种方式监听Outlook在注册表中“禁用”Add-in并让此侦听器删除Outlook正在设置的reg键。

I have attempted to do #1 by the following:

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

但是两者都没有成功。

我意识到 System.Windows.Forms.Application.ThreadException 不一定适用于 Outlook Add-ins,但我想为什么不试试呢。

此外,我已经阅读过关于 Outlook 为 Add-ins 启动单独的 AppDomain 的内容,因此我希望 AppDomain.CurrentDomain 可以用于此目的。我编写了一些故意抛出异常的代码进行测试,但无法进入这两个事件,并且 Outlook 继续禁用 Add-in。

任何帮助/见解将不胜感激。

1个回答

1
当 Outlook 插件被禁用时,它会将加载行为从 3 更改为 2。您可以从注册表中检查此加载行为,以确定插件是否已被禁用。

@kapilg 我认为这是有价值的信息,所以我给了它一个+1,但我正在寻找一种方法来防止任何未处理的异常冒泡并在我的插件内部被禁用。谢谢。 - Adam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接