Outlook 2010 Com addin - NewExplorer никогда не запускается

По некоторым причинам в моем приложении мой 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);
}
 Matt21 сент. 2015 г., 10:57
Я не думаю, что это события, это открытые методы интерфейса IExtensibility2
 Scott Baker20 сент. 2015 г., 18:05
Для моей собственной информации: Где вы привязываетесь к OnConnection и OnStartupComplete? Какой объект имеет эти события?
 Matt02 мар. 2012 г., 18:35
На самом деле, возможно, я исправил это, добавив частные _Outlook.Explorers Explorers; на уровне класса, однако я думал, что личное приложение _Outlook.Application; будет держать его в рамках, кто-нибудь может объяснить?

Ответы на вопрос(1)

Решение Вопроса

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

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

 Matt05 мар. 2012 г., 12:00
Хорошо, просто прочитайте SO сообщение, это имеет смысл.
 Matt05 мар. 2012 г., 11:58
Да, но у меня есть "личное _Outlook.Application Application;" который является объектом уровня класса Application, однако этого недостаточно, я этого не понимаю. Получает ли мой Application.Explorers сборщик мусора, даже если приложение объявлено на уровне класса?

Ваш ответ на вопрос