2013-06-03 43 views
1

我在C#中使用Managed EWS API來實現電子郵件/日曆客戶端。要處理更新,我正在使用拉通知。我試圖找出如何正確處理重複序列的「刪除」事件。該事件在技術上是一個移動事件,因爲它顯示爲將該系列文件移動到垃圾文件夾。如何處理重複序列的EWS刪除(移動)事件?

在處理重複性系列時,您獲得的事件始終針對重複性主數據。我通過使用主ID和重複信息成功實現了「添加」情況,以同步我感興趣的所有單個事件,但一直未能弄清楚刪除/刪除情況。

我已經調查迄今兩種主要的方法:

1)儘量重用變化的關鍵。在循環系列中,所有實例的更改鍵都是相同的。所以我嘗試在緩存中查找匹配更改密鑰的約會。但是,在這種情況下,更改密鑰不匹配,因爲到達事件時,系列已移至垃圾箱文件夾,因此有新的更改密鑰。

2)使用move/delete事件中的循環主服務器綁定到我的緩存中的約會,然後嘗試根據這些事件的唯一ID進行刪除。這不符合#1的原因。當我得到這個事件的時候,這個系列已經被移動了,並且這些事件都有了新的ID。因此,查找中沒有新的ID與我擁有的舊ID匹配。

爲了完整起見,我在事件中使用了OldItemId,但正如我所料,我無法對此ID執行任何綁定,因爲該項目在服務器上不再存在。

因此總之,我沒有找到任何方法將重複出現的系列的移至垃圾事件與實際的原始重現系列相關聯。這是不可能的或者我錯過了什麼?

我現在要測試預約的循環主控ID的主動緩存。即對於我同步的每個約會,我將測試它是否爲系列的一部分,並加載該系列的重複出現的主控的ID。然後,當我得到一個刪除/移動事件時,我應該能夠將OldItemId從事件鏈接到緩存的循環主狀態,然後刪除所有關聯的事件。

回答

1

因此,我正在調查的最後一個解決方案最終成爲我使用的解決方案。現在,當我同步約會時,我會檢查它們是否是系列的一部分,並查找它們的循環主和緩存狀態。然後,當我看到刪除/移動事件時,我可以查找主約會ID的地圖,以確定該操作是否適用於一系列操作。

我曾希望避免做所有這些額外的狀態跟蹤,但我無法找到將刪除事件鏈接到我沒有同步的單個事件。