我有一个我最近继承的 Outlook 2007 加载项,目前在生产中存在一个问题,即某些用户会定期禁用他们的加载项,而且似乎是随机的。外接程序没有日志,并且在每个方法/事件调用到外接程序代码时都有 try/catch(和吃)块。我做了一些谷歌搜索,发现如果有未处理的异常抛出到 Outlook,Outlook 会“软禁用”加载项。
据我所知,加载项没有抛出异常。我想做的是 1) 在插件中创建某种全局异常处理程序,以 100% 确保所有异常都被捕获。或 2) 以某种方式侦听 Outlook“禁用”注册表中的加载项并让此侦听器删除 Outlook 正在设置的 reg 键。
我试图通过以下方式做#1:
AppDomain.CurrentDomain.UnhandledException += AppDomain_UnhandledException;
System.Windows.Forms.Application.ThreadException += Application_ThreadException;
但都没有成功。
我意识到 System.Windows.Forms.Application.ThreadException 不一定适用于 Outlook 加载项,但我想为什么不尝试一下。
另外,我读到 Outlook 为加载项启动了一个单独的 AppDomain,所以我希望 AppDomain.CurrentDomain 可以为此工作。我编写了一些故意抛出异常的代码来测试并且无法进入这些事件中的任何一个,并且 Outlook 继续禁用加载项。
任何帮助/见解将不胜感激。