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

Mat*_*att 4 c# outlook add-in

出于某种原因,在我的应用程序中,我的FolderSwitch在使用应用程序打开的主资源管理器上运行,但NewExplorer事件从未触发,因此显然FolderSwitch事件不会在新的资源管理器上触发.

我无法弄清楚为什么事件不会发生.

private List<_Outlook.Explorer> ListOfExplorerWindows = new List<_Outlook.Explorer> { };
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);
}
Run Code Online (Sandbox Code Playgroud)

Sli*_*SFT 5

对于要保持周围使用VSTO时的任何事件,你需要保持周围类级别成员(Explorer,Application,Inspector,CommandBar,等),以确保GC线程删除它们.这是资源优化,但也可能是一个痛苦的经验教训.

有关活动有效期类似的SO帖子,请参阅相关的MSDN论坛帖子.