次の方法で共有


ReplicaMetadata.CleanupDeletedItems メソッド

派生クラスでオーバーライドされると、削除済みマークの付いている項目のうち、前回のクリーンアップ日時より古い項目を消去します。

名前空間: Microsoft.Synchronization.MetadataStorage
アセンブリ: Microsoft.Synchronization.MetadataStorage (microsoft.synchronization.metadatastorage.dll 内)

構文

'宣言
Public MustOverride Function CleanupDeletedItems ( _
    timeInterval As TimeSpan _
) As Boolean
'使用
Dim instance As ReplicaMetadata
Dim timeInterval As TimeSpan
Dim returnValue As Boolean

returnValue = instance.CleanupDeletedItems(timeInterval)
public abstract bool CleanupDeletedItems (
    TimeSpan timeInterval
)
public:
virtual bool CleanupDeletedItems (
    TimeSpan timeInterval
) abstract
public abstract boolean CleanupDeletedItems (
    TimeSpan timeInterval
)
public abstract function CleanupDeletedItems (
    timeInterval : TimeSpan
) : boolean

パラメーター

  • timeInterval
    削除した項目をメタデータ ストアに保管しておく最小経過時間を返します。値 0 を指定すると、削除した項目が直ちにクリーンアップされます。

戻り値

クリーンアップが実行された場合は true、それ以外の場合は false です。

例外

例外の種類 条件

ObjectDisposedException

オブジェクトが破棄されているか、正しく初期化されていません。

解説

このメソッドは、削除した項目を指定のスケジュールに従ってプロバイダーがクリーンアップを行うときに役立ちます。timeInterval で指定する間隔は、削除された項目をメタデータ ストアに保管する最小経過時間です。この処理では、timeInterval で指定された時間が経過したときに削除済み項目をクリーンアップするだけなので、CleanupDeletedItems を定期的に (たとえばプロバイダーが変更検出を実行するたびに) 呼び出すこともできます。CleanupDeletedItems では、timeInterval の間、削除マークが付いた削除済み項目を常に保管しておくことで、負荷の大きい完全列挙からプロバイダーを保護できます。

CleanupDeletedItems の初回呼び出し時には、前回のクリーンアップ時刻として現在の日時が保存され、それ以外の処理は行われません。

それ以降は、CleanupDeletedItems を呼び出すたびに以下の手順が実行されます。

  1. 現在の日時と前回クリーンアップが正常に実行された日時を比較します。経過時間が timeInterval より短い場合、それ以降のアクションは実行されず、false が返されます。

  2. 前回のクリーンアップ時より古い項目を検出して、すべて消去します。

  3. 現在の日時を、前回クリーンアップが正常に実行された日時として保存します。

  4. 忘れられたナレッジを更新して、消去された削除済み項目を反映させます。

CleanupDeletedItems は前回の正常なクリーンアップより前に削除済みとマークされていた項目だけをクリーンアップし、前回の正常なクリーンアップ以降に削除済みとマークされた項目はクリーンアップしないので注意してください。たとえば、CleanupDeletedItems が項目をクリーンアップして現在の日時を保存したとします。24 日後に、timeInterval を 20 日と指定して CleanupDeletedItems が再度呼び出された場合、CleanupDeletedItems は、クリーンアップが最後に正常に実行された 24 日前より古い削除済み項目のみを消去します。24 日前と 20 日前の間 (たとえば 22 日前) に削除済みとマークされた項目は消去されません。20 日を経過していない削除済み項目も消去されません。

注意

timeInterval に 0 の値を指定するのは特別なケースで、メタデータ ストア内の削除済み項目がすべて消去されます。このような処理は、同期コミュニティ内の他のレプリカがすべて相互に同期しているという確信がプロバイダー側にある場合にのみ実行してください。削除済み項目の消去が早すぎると、Sync Framework で完全な列挙が必要になる可能性があります。

参照

リファレンス

ReplicaMetadata クラス
ReplicaMetadata メンバー
Microsoft.Synchronization.MetadataStorage 名前空間