Как поймать синхронизацию конца папок (отправка / получение) в Outlook VSTO надстройки - PullRequest
0 голосов
/ 02 ноября 2018

Простой вопрос, мне нужно загрузить данные (хранящиеся в виде элементов хранения в папке «Входящие») после того, как Outlook завершит синхронизацию этой папки. Мой текущий код:

private Outlook.Explorer _currentExplorer;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    _currentExplorer = Application.ActiveExplorer();
    _currentExplorer.Session.SyncObjects[1].SyncEnd += SyncEnd_Event;
    // also tried:  
    //_currentExplorer.Session.SyncObjects.AppFolders.SyncEnd += SyncEnd_Event;
}

private void SyncEnd_Event()
{
    MyAddin.LoadData();
}

Я использовал SyncObjects[1], потому что обнаружил, что это должно быть «Отправить / получить все», но мой SyncEnd_Event() никогда не срабатывает.

Большое спасибо за любую помощь!

1 Ответ

0 голосов
/ 06 ноября 2018

Событие SyncEnd не сработает в вашем случае, потому что объект, вызывающий события (SyncObject), является неявной переменной, созданной компилятором. Задница, как только GC выпустит ее, никакие события не начнутся. Сохраните объект SyncObject в выделенной глобальной (классовой) переменной и установите для него обработчики событий.

...