IReplicaMetadata::CleanupDeletedItems

Quita los elementos marcados como eliminados y con una antigüedad superior a la última limpieza llevada a cabo correctamente.


HRESULT CleanupDeletedItems(
  ULONGLONG ulTimeIntervalInMilliseconds);

ulTimeIntervalInMilliseconds

[in] Antigüedad mínima de los elementos eliminados para guardarlos en el almacén de metadatos. Un valor de 0 significa que todos los elementos eliminados se limpian inmediatamente.

  • S_OK

  • S_FALSE si no se realiza ninguna limpieza.

  • E_OUTOFMEMORY

  • SYNC_E_METADATA_ACTIVE_TRANSACTION_REQUIRED si no se abre una transacción explícita.

  • SYNC_E_INVALID_OPERATION si se produce una operación no válida.

Este método ayuda a un proveedor a limpiar los elementos eliminados según una programación establecida. El intervalo de tiempo especificado por ulTimeIntervalInMilliseconds es la antigüedad mínima de los elementos eliminados que se almacenan en el almacén de metadatos. Dado que solo limpia los elementos eliminados cuando ha transcurrido el tiempo indicado en ulTimeIntervalInMilliseconds, se puede llamar a CleanupDeletedItems a intervalos regulares; por ejemplo, cada vez que el proveedor realiza una detección de cambios. Al conservar siempre los elementos eliminados que se han marcado como eliminados durante el tiempo indicado en ulTimeIntervalInMilliseconds, CleanupDeletedItems ayuda a proteger el proveedor frente a enumeraciones completas costosas.

La primera vez que se llama a CleanupDeletedItems, este almacena la hora actual como la hora en la que se ha llevado a cabo la última limpieza correcta y no realiza ninguna otra acción.

A partir de este momento, cada vez que se llama a CleanupDeletedItems, este realiza los pasos siguientes:

  1. Compara la hora actual con la hora en la que se realizó la última limpieza correcta. Si el tiempo transcurrido es menor que ulTimeIntervalInMilliseconds, no se realiza ninguna otra acción y se devuelve S_FALSE.

  2. Quita todos los elementos eliminados con una antigüedad superior a la de la última limpieza llevada a cabo correctamente.

  3. Guarda la hora actual como la hora en la que se realizó la última limpieza correcta.

  4. Actualiza el conocimiento olvidado para reflejar los elementos eliminados que se quitaron.

Tenga en cuenta que CleanupDeletedItems solo limpia los elementos que se marcaron como eliminados antes de la última limpieza correcta, y no los elementos que se han marcado como eliminados desde entonces. Por ejemplo, CleanupDeletedItems limpia correctamente los elementos y almacena la hora actual. Veinticuatro días después, se llama de nuevo a CleanupDeletedItems con el valor de ulTimeIntervalInMilliseconds especificado como 20 días. CleanupDeletedItems solo quita los elementos eliminados con una antigüedad superior a 24 días, ya que fue entonces cuando se llevó a cabo la última limpieza correcta. Los elementos marcados como eliminados con una antigüedad superior a 20 días e inferior a 24 días, por ejemplo 22 días, no se quitarán. Los elementos eliminados con una antigüedad inferior a 20 días tampoco se quitarán.

Nota Nota

Especificar un valor de 0 para ulTimeIntervalInMilliseconds constituye un caso especial que hace que se quiten del almacén de metadatos todos los elementos eliminados. Esto solo se debe hacer cuando un proveedor está razonablemente seguro de que todas las demás réplicas de la comunidad de sincronización están sincronizadas entre sí, ya que quitar los elementos eliminados de una forma demasiado agresiva puede dar lugar a que Sync Framework realice una enumeración completa.

Mostrar: