1

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

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

我遇到的奇怪问题是:

  1. 在月视图中单击一天
  2. 文本框显示在日期块中,输入主题,然后按 Enter
  3. 双击新约会立即打开它
  4. 进行一些更改,例如设置提醒
  5. 点击保存按钮

此时,Outlook 会显示一个消息框,提示“该项目无法保存,因为它已被另一个用户或在另一个窗口中更改”。

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

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

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

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

4

1 回答 1

1

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

  1. 您的代码(或 Outlook)打开该项目
  2. 兑换打开项目
  3. 兑换修改物品
  4. 救赎拯救它
  5. Outlook(或您的代码)修改并保存 Outlook 项目

您可以确保 Outlook 没有打开 #1 中的项目,或者(如果它已经打开)您可以搭载 Outlook 项目并在步骤 #2 中使用 RDOSession.GetRDOObjectfromOutlookObject 打开它。

于 2016-08-17T14:14:21.093 回答