Outlook 2010 Com插件 – NewExplorer永远不会触发

出于某种原因,在我的应用程序中,我的FolderSwitch在使用应用程序打开的主资源管理器上工作,但NewExplorer事件永远不会触发,因此显然FolderSwitch事件不会在新的资源管理器上触发。

我无法弄清楚为什么事件不会触发。

private List ListOfExplorerWindows = new List { }; private _Outlook.Application Application; public void OnConnection(object Application, Extensibility.ext_ConnectMode ConnectMode, object AddInInst, ref Array custom) { this.Application = (_Outlook.Application)Application; } public void OnStartupComplete(ref Array custom) { _Outlook.Explorer Explorer = this.Application.ActiveExplorer(); Explorer.FolderSwitch += new _Outlook.ExplorerEvents_10_FolderSwitchEventHandler(Explorer_FolderSwitch); ListOfExplorerWindows.Add(Explorer); this.Application.Explorers.NewExplorer += new _Outlook.ExplorersEvents_NewExplorerEventHandler(Explorers_NewExplorer); } private void Explorers_NewExplorer(_Outlook.Explorer Explorer) { Explorer.FolderSwitch += new _Outlook.ExplorerEvents_10_FolderSwitchEventHandler(Explorer_FolderSwitch); ListOfExplorerWindows.Add(Explorer); } 

对于在使用VSTO时要保留的任何事件,您需要保留类级别成员( ExplorerApplicationInspectorCommandBar )以防止GC线程删除它们。 这是资源优化,但也可能是一个痛苦的经验教训。

有关活动有效期或类似的SOpost,请参阅相关的MSDN论坛 post 。