如何在Outlook VSTO加载项中捕获文件夹的同步结束(发送/接收)

时间:2018-11-02 16:41:20

标签: c# outlook vsto outlook-addin office-addins

一个简单的问题,我需要在Outlook完成此文件夹的同步后加载数据(存储为收件箱文件夹中的存储项目)。我当前的代码:

newList.forEach((key, value) -> {
   List<Double> xData = value.stream().map(Coordinates::getX).collect(Collectors.toList());
   List<Double> yData = value.stream().map(Coordinates::getY).collect(Collectors.toList());
   chart.addSeries(key, xData, yData);
});

我使用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]从未被解雇。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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