我在C#中使用Managed EWS API来实现电子邮件/日历客户端。要处理更新我正在使用拉动通知。我想弄清楚如何正确处理"删除"重复系列活动。该事件在技术上是一个移动事件,因为它显示为将系列移动到垃圾文件夹。
在处理定期系列时,您获得的事件总是针对重复的主人。我已成功实施了"添加"通过使用主ID和重复信息来同步我感兴趣的所有单个事件,但是还没有能够找出删除/删除案例。
到目前为止,我已经调查了两种主要方法:
1)尝试重用更改密钥。在重复序列中,所有实例的更改键都是相同的。所以我尝试在缓存中查找具有匹配更改密钥的约会。但是,在这种情况下,更改键不匹配,因为当您收到活动时,系列已移至垃圾箱文件夹,因此有一个新的更改密钥。
2)使用move / delete事件中的定期主服务器绑定到我的缓存中的约会,然后尝试根据这些事件的唯一ID进行删除。这与#1的原因不同。当我收到活动时,系列已经移动,并且所有活动都有新的ID。因此,查找中没有任何新ID与我拥有的旧ID匹配。
为了完整性,我在事件中使用了OldItemId,但正如预期的那样,我无法对此ID执行任何绑定,因为该项目不再存在于服务器上。
所以简而言之,我没有找到任何方法将重复系列的移动到垃圾事件链接到实际的原始重复系列。这是不可能的还是我错过了什么?
我现在要测试一些主动缓存定期的重复主ID。即对于我同步的每个约会,我将测试它是否是系列的一部分并加载该系列的定期主人的ID。然后当我得到一个删除/移动事件时,我应该能够将OldItemId从事件链接到我的缓存重复主状态,然后删除所有相关的事件。
答案 0 :(得分:1)
所以我正在调查的最后一个解决方案最终成为我使用的解决方案。现在,当我同步约会时,我会检查它们是否是系列的一部分并查找它们的重复主控并缓存该状态。然后,当我看到删除/移动事件时,我可以查找我的主约会ID地图,以判断该操作是否适用于系列。
我希望避免进行所有这些额外的状态跟踪,但无论如何我无法找到从删除事件到我没有它同步的各个事件的链接。