Outlook 2010 Com addin - NewExplorer никогда не запускается - PullRequest
4 голосов
/ 02 марта 2012

По некоторым причинам в моем приложении мой 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);
}

1 Ответ

5 голосов
/ 03 марта 2012

Для любых событий, которые вы хотите держать при использовании VSTO, вы должны держать рядом с собой члена класса (Explorer, Application, Inspector, CommandBar и т. Д. ) чтобы GC Thread не мог их удалить.Это оптимизация ресурсов, но она также может быть болезненным уроком для изучения.

См. Связанный пост на форуме MSDN относительно времени существования события или аналогичный пост SO .

...