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



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

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

我遇到的奇怪问题是:

  1. 点击月中的某一天查看
  2. 文本框显示在日期块中,输入主题,然后按Enter
  3. 双击新约会立即打开
  4. 做一些修改,比如设置提醒
  5. 点击保存键

此时,Outlook将显示一个消息框,说"该项目无法保存,因为它被另一个用户或在另一个窗口更改了。"

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

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

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

我测试的Outlook版本是Outlook 2016。

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

    您的代码(或Outlook)打开项
  1. Redemption打开物品
  2. 兑换修改物品
  3. Redemption保存
  4. Outlook(或您的代码)修改并保存Outlook项目

你可以确保Outlook不打开#1中的项目,或者(如果它已经打开)你可以在Outlook项目上使用RDOSession打开它。

最新更新