如何在 Outlook VSTO 加载项中捕获文件夹同步结束 (send/receive)

How to catch synchronization end of folders(send/receive) in Outlook VSTO add-in

简单的问题,我需要在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]因为我发现它应该是"Send/Receive All"但是我的SyncEnd_Event()从来没有被触发过。

非常感谢您的帮助!

SyncEnd 事件不会在您的情况下触发,因为引发事件的对象 (SyncObject) 是由编译器创建的隐式变量。一旦 GC 释放它,就不会触发任何事件。 将 SyncObject 对象存储在专用全局 (class) 变量中并在其上设置事件处理程序。