1

我正在使用 C# 中的托管 EWS API 来实现电子邮件/日历客户端。为了处理更新,我正在使用拉取通知。我试图弄清楚如何正确处理重复系列的“删除”事件。该事件在技术上是一个移动事件,因为它显示为将系列移动到垃圾文件夹。

在处理重复出现的系列时,你得到的事件总是给重复出现的主人。我已经成功地实现了“添加”案例,方法是使用主 ID 和重复信息来同步我感兴趣的所有单个事件,但无法弄清楚删除/删除案例。

到目前为止,我已经研究了两种主要方法:

1)尝试重用更改键。在循环系列中,所有实例的更改键都是相同的。因此,我尝试在缓存中查找具有匹配更改键的约会。但是,在这种情况下更改键不匹配,因为当您收到事件时,系列已被移至垃圾文件夹,因此有一个新的更改键。

2) 使用移动/删除事件中的重复主节点绑定到我的缓存中的约会,然后尝试根据这些事件的唯一 ID 删除。这与 #1 的原因不同。到我收到事件时,该系列已经被移动,并且所有事件都有新的 ID。因此,查找中的新 ID 都不匹配我拥有的旧 ID。

为了完整起见,我在事件中使用了 OldItemId,但正如预期的那样,我无法对此 ID 执行任何绑定,因为该项目不再存在于服务器上。

所以简而言之,我没有找到任何方法将重复系列的“移至垃圾箱”事件与实际的原始重复系列联系起来。这是不可能的还是我错过了什么?

我现在要测试一些对约会的重复主 ID 的主动缓存。即,对于我同步的每个约会,我将测试它是否是系列的一部分并加载该系列的重复主人的 ID。然后,当我得到一个删除/移动事件时,我应该能够将事件中的 OldItemId 链接到我缓存的重复主状态,然后删除所有相关的事件。

4

1 回答 1

1

所以我调查的最后一个解决方案最终成为我使用的那个。现在,当我同步约会时,我会检查它们是否是系列的一部分,并查找它们的重复主控并缓存该状态。然后,当我看到删除/移动事件时,我可以查找我的主约会 ID 地图,以判断该操作是否适用于系列。

我希望避免进行所有这些额外的状态跟踪,但无论如何我都找不到从删除事件到我在没有它的情况下同步的各个事件的链接。

于 2013-06-06T07:37:22.390 回答