Condividi tramite


IReplicaMetadata::CleanupDeletedItems

Rimuove gli elementi contrassegnati come eliminati precedenti all'ora dell'ultima pulizia completata.

HRESULT CleanupDeletedItems(
  ULONGLONG ulTimeIntervalInMilliseconds);

Parametri

  • ulTimeIntervalInMilliseconds
    [in] Periodo di memorizzazione minimo degli elementi eliminati nell'archivio dei metadati. Il valore 0 indica che la pulizia di tutti gli elementi eliminati viene eseguita immediatamente.

Valore restituito

  • S_OK

  • S_FALSE se non viene eseguita alcuna pulizia.

  • E_OUTOFMEMORY

  • SYNC_E_METADATA_ACTIVE_TRANSACTION_REQUIRED se una transazione esplicita non è aperta.

  • SYNC_E_INVALID_OPERATION se si verifica un'operazione non valida.

Osservazioni

Questo metodo consente a un provider di effettuare la pulizia degli elementi eliminati in base a una pianificazione. L'intervallo di tempo specificato da ulTimeIntervalInMilliseconds è il periodo di memorizzazione minimo degli elementi eliminati nell'archivio dei metadati. Poiché la pulizia degli elementi eliminati viene eseguita solo una volta trascorso il tempo in ulTimeIntervalInMilliseconds, è possibile chiamare regolarmente CleanupDeletedItems, ad esempio ogni volta che il provider esegue il rilevamento delle modifiche. Mantenendo sempre gli elementi eliminati e contrassegnati come tali durante ulTimeIntervalInMilliseconds, CleanupDeletedItems impedisce che il provider esegua enumerazioni complete che richiedono molte risorse di sistema.

Alla prima chiamata, CleanupDeletedItems archivia l'ora corrente come ora dell'ultima pulizia completata e non esegue altre azioni.

A ogni chiamata successiva, CleanupDeletedItems effettua i passaggi seguenti:

  1. Controlla l'ora corrente rispetto all'ora dell'ultima pulizia completata. Se il tempo trascorso è inferiore a ulTimeIntervalInMilliseconds, non verrà eseguita alcuna azione e verrà restituito S_FALSE.

  2. Rimuove tutti gli elementi eliminati precedenti all'ora dell'ultima pulizia completata.

  3. Salva l'ora corrente come ora dell'ultima pulizia completata.

  4. Aggiorna la conoscenza dimenticata per riflettere gli elementi eliminati che sono stati rimossi.

Tenere presente che CleanupDeletedItems effettua la pulizia solo degli elementi contrassegnati come eliminati prima dell'ora dell'ultima pulizia completata e non di quelli contrassegnati come eliminati dopo l'ora dell'ultima pulizia completata. Ad esempio, CleanupDeletedItems pulisce gli elementi e archivia l'ora corrente. Ventiquattro giorni dopo, CleanupDeletedItems viene nuovamente chiamato con ulTimeIntervalInMilliseconds impostato su 20 giorni. CleanupDeletedItems rimuove solo gli elementi eliminati più di 24 giorni prima, ovvero quando è stata completata l'ultima pulizia. Un elemento contrassegnato come eliminato tra 24 e 20 giorni prima, ad esempio 22 giorni prima, non verrà rimosso. Non verranno rimossi anche tutti gli elementi eliminati che non risalgono a 20 giorni prima.

Nota

La specifica del valore 0 per ulTimeIntervalInMilliseconds è un caso speciale che comporta la rimozione di tutti gli elementi eliminati dall'archivio dei metadati. Si consiglia di eseguire questa operazione solo quando un provider è certo che tutte le altre repliche nella community di sincronizzazione sono sincronizzate tra loro, perché la rimozione troppo aggressiva di elementi eliminati può comportare l'esecuzione di un'enumerazione completa da parte di Sync Framework.

Vedere anche

Riferimento

Interfaccia IReplicaMetadata