【问题标题】:How to catch synchronization end of folders(send/receive) in Outlook VSTO add-in如何在 Outlook VSTO 加载项中捕获文件夹的同步结束(发送/接收)
【发布时间】:2018-11-07 01:36:39
【问题描述】:

简单的问题,我需要在 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() 从未被解雇。

非常感谢您的帮助!

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 解决了我的问题,谢谢!另外,我必须添加SyncObject.Start(),否则它不起作用。
    • 它可以在没有“开始”的情况下工作,但仅在 Outlook 自动启动发送/接收或用户按 Ctrl+M 时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 2017-11-04
    • 2020-09-18
    • 1970-01-01
    • 2018-11-27
    相关资源
    最近更新 更多