同期の進行状況の報告

Microsoft Sync Framework は、ProgressChanged イベント (マネージ コードの場合) または ISyncCallback::OnProgress イベント (アンマネージ コードの場合) を使用して、同期の進行状況をアプリケーションに報告します。このイベントが発生したときに受け渡される情報は、同期元プロバイダの実装により異なります。

各変更の報告

既定では、同期先プロバイダによって変更が適用されるたびに 1 回、Sync Framework から ProgressChanged イベント (マネージ コードの場合) または ISyncCallback::OnProgress イベント (アンマネージ コードの場合) が送信されます。変更バッチが完全に適用された後にも、Sync Framework から 1 回、このイベントが送信されます。

この既定の進行状況通知は、同期元プロバイダで変更および変更バッチの作業見積もりが指定されていない場合にのみ使用されます。

作業見積もりの報告

Sync Framework は、適用された変更および変更バッチの作業見積もりを報告することもできます。同期元プロバイダは、各変更を適用するために必要な作業と、各変更バッチを完全に適用するために必要な作業の両方を見積もる必要があります。同期セッションの残りの作業も、同期元プロバイダが見積もる必要があります。これらの値が同期元プロバイダによって指定されていた場合、Sync Framework は、変更バッチの適用中、それぞれの変更、競合、または変更バッチが同期先プロバイダによって適用されるたびに、完了した作業を加算します。さらに、Sync Framework は、定期的に ProgressChanged イベント (マネージ コードの場合) または ISyncCallback::OnProgress イベント (アンマネージ コードの場合) を送信することによって、現在完了した作業の合計と、セッションの合計作業を報告します。変更バッチが完全に適用された後にも、Sync Framework から 1 回、このイベントが送信されます。

作業の進行状況の見積もりを報告するためには、次の表に示したように、同期元プロバイダで、各変更の作業見積もり、各変更バッチの作業見積もり、およびセッションの残りの作業を指定する必要があります。

作業見積もりの種類 マネージ コードによる指定 アンマネージ コードによる指定

変更

WorkEstimate

ISyncChangeBatchBase::AddItemMetadataToGroup または ISyncChangeBatch::AddLoggedConflict の dwWorkForChange パラメータ。この値は、Sync Framework の ISyncChange::SetWorkEstimate を使って設定することもできます。

変更バッチ

BatchWorkEstimate

ISyncChangeBatchBase::SetWorkEstimateForBatch

セッション

RemainingSessionWorkEstimate

ISyncChangeBatchBase::SetRemainingWorkEstimateForSession

カスタム進行状況の報告

プロバイダは、OnProgressChanged (マネージ コードの場合) または ISyncSessionState::OnProgress (アンマネージ コードの場合) を呼び出すことにより、任意のタイミングで進行状況通知を送信できます。同期段階が ChangeApplication (マネージ コードの場合) または SPS_CHANGE_APPLICATION (アンマネージ コードの場合) として指定された場合、Sync Framework は、進行状況通知が送られるたびに、合計完了作業量を累計します。また、Sync Framework は、指定された合計作業をセッションの残りの作業として解釈し、指定された合計作業を完了済み作業の累計値に加算することによってセッションの合計作業を計算します。これらの算出された値が、Sync Framework から進行状況通知イベントへと渡されます。同期段階が、他の有効な値であった場合、作業見積もりの値が直接、進行状況通知イベントに渡されます。

同期元プロバイダで作業見積もりを指定するときや、同期先プロバイダから進行状況通知を送信して同期状態の ChangeApplication (マネージ コードの場合) または SPS_CHANGE_APPLICATION (アンマネージ コードの場合) を指定するときには、同じ作業が 2 回報告されることのないように注意してください。これは、変更の適用中に進行状況の通知が送信されるたびに、完了済みの作業の値が Sync Framework によって加算されるためです。プロバイダが独自の進行状況通知を送信する場合、Sync Framework は、プロバイダが指定した作業見積もり値をセッションの合計完了作業量に加えます。これによって同じ作業が 2 回数えられます。1 回は Sync Framework が報告するとき、もう 1 回はプロバイダが報告するときです。

参照

概念

同期プロバイダ
同期イベントへの応答