更新Outlook约会可能导致Outlook保存错误

更新Outlook约会可能导致Outlook保存错误,outlook,outlook-addin,outlook-redemption,outlook-2016,Outlook,Outlook Addin,Outlook Redemption,Outlook 2016,我有一个在Outlook和我的应用程序之间同步约会的应用程序。同步代码使用赎回更新Outlook中的约会 在Outlook中添加约会时,“我的代码”将捕获“添加项目”事件,在我的应用程序中生成等效的约会,并将我的约会ID作为用户属性添加到Outlook约会中,然后将其保存 我遇到的奇怪问题是: 在月视图中单击一天 文本框显示在day块中,键入主题,然后按Enter键 双击新约会以立即打开它 进行一些更改,例如设置提醒 点击保存按钮 此时,Outlook将向我显示一个消息框,说明“无法保存该项目,

我有一个在Outlook和我的应用程序之间同步约会的应用程序。同步代码使用赎回更新Outlook中的约会

在Outlook中添加约会时,“我的代码”将捕获“添加项目”事件,在我的应用程序中生成等效的约会,并将我的约会ID作为用户属性添加到Outlook约会中,然后将其保存

我遇到的奇怪问题是:

  • 在月视图中单击一天
  • 文本框显示在day块中,键入主题,然后按Enter键
  • 双击新约会以立即打开它
  • 进行一些更改,例如设置提醒
  • 点击保存按钮
  • 此时,Outlook将向我显示一个消息框,说明“无法保存该项目,因为它已被其他用户或其他窗口更改。”

    如果启用了约会同步加载项,我发现这种情况经常发生,但如果禁用它,这种情况就不会发生

    看起来Outlook几乎检测到我通过赎回保存用户属性的代码的更改,并且不喜欢它

    这是因为Redemption直接访问MAPI表以保存数据,而Outlook在我打开约会COM对象太快时仍会缓存该对象。所以当我想再次保存时,我打开的约会已经“过时”了


    我测试的Outlook版本是Outlook 2016。

    如果发生以下情况,将返回此错误:

  • 您的代码(或Outlook)将打开该项目
  • 赎回打开该项目
  • “赎回”修改项目
  • 救赎拯救了它
  • Outlook(或您的代码)修改并保存Outlook项目
  • 您可以确保Outlook没有在#1中打开该项目,或者(如果它已经打开)您可以在第#2步借助Outlook项目并使用RDOSession.GetRDOObjectfromOutlookObject打开它