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

时间:2016-08-17 07:16:14

标签: outlook outlook-addin outlook-redemption outlook-2016

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

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

我遇到的一个奇怪问题是:

  1. 单击月视图中的某一天
  2. 文本框显示在日期栏中,输入主题,然后按Enter键
  3. 双击新约会立即打开
  4. 进行一些更改,例如设置提醒
  5. 点击保存按钮
  6. 此时,Outlook会显示一个消息框,提示“该项目无法保存,因为它已被其他用户或其他窗口更改。”

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

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

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

    我正在测试的Outlook版本是Outlook 2016。

1 个答案:

答案 0 :(得分:1)

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

  1. 您的代码(或Outlook)会打开项目
  2. 兑换会打开商品
  3. 赎回会修改项目
  4. 赎回保存
  5. Outlook(或您的代码)修改并保存Outlook项目
  6. 您可以确保Outlook不会打开#1中的项目或(如果它已经打开)您可以搭载Outlook项目并在步骤#2使用RDOSession.GetRDOObjectfromOutlookObject打开它。