移除標示為已刪除的項目和上次成功清除時間之前的項目。
HRESULT CleanupDeletedItems(
ULONGLONG ulTimeIntervalInMilliseconds);
參數
- ulTimeIntervalInMilliseconds
[in] 已刪除項目要在中繼資料存放區中保留的最低存在時間。值為 0 時表示所有刪除的項目將會立即清除。
傳回值
S_OK
如果未執行任何清除,則為 S_FALSE。
E_OUTOFMEMORY
如果未開啟明確交易,則為 SYNC_E_METADATA_ACTIVE_TRANSACTION_REQUIRED。
發生無效的作業時,為 SYNC_E_INVALID_OPERATION。
備註
這個方法可協助提供者按照既定排程清除已刪除項目。ulTimeIntervalInMilliseconds 指定的時間間隔,是已刪除項目要在中繼資料存放區中保留的最低存在時間。由於 CleanupDeletedItems 只在 ulTimeIntervalInMilliseconds 時間過後清除已刪除項目,所以可以定期呼叫,例如在提供者每次執行變更偵測的時候。因為 CleanupDeletedItems 一定會保留在 ulTimeIntervalInMilliseconds 期間已經標示為已刪除的已刪除項目,所以能協助保護提供者免於執行耗費極大成本的完整列舉。
第一次呼叫 CleanupDeletedItems 時,它會儲存目前時間當做上次成功清除時間,而且不採取任何其他動作。
後續每一次呼叫 CleanupDeletedItems 時,它將會執行下列步驟。
針對上次成功清除時間檢查目前時間。如果經過的時間少於 ulTimeIntervalInMilliseconds,就不採取任何行動,並且傳回 S_FALSE。
移除上次成功清除時間之前的所有已刪除項目。
儲存目前時間當做上次成功清除時間。
更新被遺忘的知識,以反映被移除的已刪除項目。
請注意,CleanupDeletedItems 只會清除上次成功清除時間之前標記為已刪除的項目,不會刪除在上次成功清除時間之後標記為已刪除的項目。例如,CleanupDeletedItems 成功清除了一些項目並且儲存目前時間。二十四天之後,使用指定為 20 天的 ulTimeIntervalInMilliseconds 再次呼叫 CleanupDeletedItems,則 CleanupDeletedItems 只會移除 24 天以前的已刪除項目,因為上次成功清除就是在 24 天前執行的。介於 24 和 20 天前之間 (例如 22 天前) 的已刪除項目,將不會被移除。任何未達 20 天的已刪除項目也不會被移除。
注意
指定 0 值的 ulTimeIntervalInMilliseconds 是一種特殊情況,會導致中繼資料存放區內所有已刪除項目都被移除。除非提供者確信同步處理社群內的所有其他複寫都已相互同步處理,才可以這樣做,因為過於積極地移除已刪除項目,反而可能導致 Sync Framework 執行完整列舉。