次の方法で共有


ISyncSessionState::OnProgress

同期の進行状況をアプリケーションに報告します。

構文

HRESULT OnProgress(
  SYNC_PROVIDER_ROLE provider,
  SYNC_PROGRESS_STAGE syncStage,
  DWORD dwCompletedWork,
  DWORD dwTotalWork);

パラメーター

  • provider
    [in] このイベントを送信するプロバイダーのロールです。

  • syncStage
    [in] 同期セッションの現在の段階です。

  • dwCompletedWork
    [in] セッション内で現在完了している作業量です。この値は、dwTotalWork の一部として解釈されます。

  • dwTotalWork
    [in] セッションの作業の合計です。

戻り値

  • S_OK

  • E_INVALIDARG (provider または syncStage が有効な値ではない場合)

説明

このメソッドは、カスタム進行状況をアプリケーションに報告する場合に使用できます。プロバイダーがこのメソッドを呼び出すと、ISyncCallback::OnProgress イベントが発生します。

syncStage に SPS_CHANGE_APPLICATION を指定すると、Sync Framework は、ISyncSessionState::OnProgress を呼び出すたびに dwCompletedWork で指定された完了済みの合計作業量を累積します。また、Sync Framework は、dwTotalWork をセッションの残りの作業と解釈し、完了済みの作業の累積値に dwTotalWork を加えることによってセッションの合計作業量を計算します。次に、Sync Framework は、これらの計算値を ISyncCallback::OnProgress に渡します。 syncStage がその他の有効値の場合は、dwCompletedWork と dwTotalWork が直接 ISyncCallback::OnProgress に渡されます。

同期元プロバイダーが作業見積もりを指定する場合、プロバイダーが ISyncSessionState::OnProgress を呼び出して syncStage に SPS_CHANGE_APPLICATION を指定すると、予期しない結果が生じる可能性があります。これは、変更の適用中に進行状況の通知が送信されるたびに、完了済みの作業の合計値を Sync Framework が計算するためです。プロバイダーが独自の進行状況通知を送信し、syncStage に SPS_CHANGE_APPLICATION を指定する場合は、Sync Framework は、プロバイダーが指定した作業見積もり値をセッションの合計完了作業量に加えます。これによって同じ作業が 2 回数えられます。1 回は Sync Framework が報告するとき、もう 1 回はプロバイダーが報告するときです。

関連項目

その他の技術情報

ISyncSessionState インターフェイス

同期の進行状況の報告