Поделиться через


IReplicaMetadata::CleanupDeletedItems

Удаляет элементы, которые помечены как удаленные и созданы раньше последней успешной очистки.

HRESULT CleanupDeletedItems(
  ULONGLONG ulTimeIntervalInMilliseconds);

Параметры

  • ulTimeIntervalInMilliseconds
    [in] Минимальный срок, в течение которого следует хранить удаленные элементы в хранилище метаданных. Значение 0 означает, что производится моментальная очистка всех удаленных элементов.

Возвращаемое значение

  • S_OK

  • S_FALSE (если очистка не выполнена).

  • E_OUTOFMEMORY

  • SYNC_E_METADATA_ACTIVE_TRANSACTION_REQUIRED (если явная транзакция не открыта).

  • SYNC_E_INVALID_OPERATION (если произошла недопустимая операция).

Замечания

Этот метод помогает поставщику очищать удаленные элементы по расписанию. Интервал времени, заданный параметром ulTimeIntervalInMilliseconds, является минимальным сроком, в течение которого удаленные элементы хранятся в хранилище метаданных. Поскольку удаленные элементы очищаются только после истечения интервала ulTimeIntervalInMilliseconds, метод CleanupDeletedItems можно вызывать регулярно, например каждый раз, когда поставщик выполняет обнаружение изменений. Если всегда сохранять удаленные элементы, помеченные как удаленные во время интервала ulTimeIntervalInMilliseconds, то метод CleanupDeletedItems поможет поставщику избежать ресурсоемких полных перечислений.

Во время первого вызова метода CleanupDeletedItems он сохраняет текущее время как время последней успешной очистки и не предпринимает никаких других действий.

При каждом успешном вызове метода CleanupDeletedItems он выполняет следующие шаги.

  1. Сравнивает текущее время со временем последней успешной очистки. Если истекшее время меньше по сравнению со значением ulTimeIntervalInMilliseconds, то никаких дальнейших действий не выполняется и возвращается значение S_FALSE.

  2. Окончательно удаляет все удаленные элементы, возраст которых превышает время выполнения последней успешной очистки.

  3. Сохраняет текущее время как время последней успешной очистки.

  4. Обновляет утраченный набор знаний таким образом, чтобы он отражал окончательно удаленные элементы.

Следует учитывать, что метод CleanupDeletedItems очищает только те элементы, которые были помечены как удаленные до наступления времени последней успешной очистки, но не те элементы, которые были помечены как удаленные после этого времени. Например, метод CleanupDeletedItems успешно очищает элементы и сохраняет текущее время. Двадцать четыре дня спустя метод CleanupDeletedItems заново вызывается с интервалом ulTimeIntervalInMilliseconds в 20 дней. Метод CleanupDeletedItems окончательно удаляет только те удаленные элементы, которые хранятся более 24 дней, потому что именно тогда была выполнена последняя успешная очистка. Элемент, помеченный как удаленный от 20 до 24 дней назад (например, 22 дня), не будет окончательно удален. Любой удаленный элемент, возраст которого составляет менее 20 дней, также не будет окончательно удален.

NoteПримечание.

Если указать для параметра ulTimeIntervalInMilliseconds значение 0, то все удаленные элементы будут окончательно удалены из хранилища метаданных. Это следует делать только в том случае, если применительно к поставщику можно с достаточной уверенностью полагать, что остальные реплики в сообществе синхронизации синхронизованы друг с другом, так как слишком интенсивное окончательное удаление элементов может привести к тому, что Sync Framework придется выполнить полное перечисление.

См. также

Справочник

Интерфейс IReplicaMetadata