Compartilhar via


IReplicaMetadata::CleanupDeletedItems

Remove itens marcados como excluídos anteriores à hora da última limpeza bem-sucedida.

HRESULT CleanupDeletedItems(
  ULONGLONG ulTimeIntervalInMilliseconds);

Parâmetros

  • ulTimeIntervalInMilliseconds
    [in] A duração mínima dos itens excluídos que serão mantidos no repositório de metadados. Um valor 0 indica que todos os itens excluídos são limpos imediatamente.

Valor de retorno

  • S_OK

  • S_FALSE quando nenhuma limpeza é executada.

  • E_OUTOFMEMORY

  • SYNC_E_METADATA_ACTIVE_TRANSACTION_REQUIRED quando uma transação explícita não é aberta.

  • SYNC_E_INVALID_OPERATION quando ocorre uma operação inválida.

Comentários

Este método ajuda um provedor a limpar os itens excluídos de acordo com um cronograma. O intervalo de tempo especificado por ulTimeIntervalInMilliseconds é a duração mínima dos itens excluídos que são mantidos no repositório de metadados. Como ele só limpa os itens excluídos quando decorrido o tempo ulTimeIntervalInMilliseconds, CleanupDeletedItems pode ser chamado regularmente, por exemplo, sempre que o provedor executa uma detecção de alteração. Manter sempre os itens excluídos que foram marcados como excluídos durante ulTimeIntervalInMilliseconds, CleanupDeletedItems ajuda a proteger o provedor contra enumerações completas caras.

Na primeira vez que CleanupDeletedItems é chamado, ele armazena a hora atual como a hora da última limpeza bem-sucedida e não executa nenhuma outra ação.

Todas as outras vezes em que CleanupDeletedItems é chamado, ele executa as etapas a seguir:

  1. Verifica a hora atual com base na hora da última limpeza bem-sucedida. Se o tempo decorrido for inferior a ulTimeIntervalInMilliseconds, nenhuma ação será tomada e S_FALSE será retornado.

  2. Remove todos os itens excluídos anteriores à hora da última limpeza bem-sucedida.

  3. Salva a hora atual como a hora da última limpeza bem-sucedida.

  4. Atualiza o conhecimento esquecido para refletir os itens excluídos que foram removidos.

Lembre-se de que CleanupDeletedItems só limpa itens que foram marcados como excluídos antes da hora da última limpeza bem-sucedida, e não itens marcados como excluídos posteriormente. Por exemplo, CleanupDeletedItems limpa os itens e armazena a hora atual com êxito. Vinte e quatro dias depois, CleanupDeletedItems é chamado novamente com ulTimeIntervalInMilliseconds especificado como 20 dias. CleanupDeletedItems remove apenas os itens excluídos antes dos últimos 24 dias, pois esse é o período em que foi executada a última limpeza bem-sucedida. Um item marcado como excluído entre 24 e 20 dias antes, por exemplo, 22 dias antes, não será removido. Qualquer item excluído em um período inferior a 20 dias também não será removido.

Dica

A especificação de um valor 0 para ulTimeIntervalInMilliseconds é uma situação especial que faz com que todos os itens excluídos sejam removidos do repositório de metadados. Isso só deve ocorrer quando um provedor tem razoável certeza de que todas as outras réplicas na comunidade de sincronização estão mutuamente sincronizadas, pois a remoção de itens excluídos de forma muito agressiva pode fazer com que o Sync Framework execute uma enumeração completa.

Consulte também

Referência

Interface IReplicaMetadata