다음을 통해 공유


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

  • provider 또는 syncStage가 유효한 값이 아니면 E_INVALIDARG입니다.

주의

이 메서드는 응용 프로그램에 사용자 지정 진행률을 보고하는 데 사용할 수 있습니다. 공급자에서 이 메서드를 호출하면 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에서 공급자가 지정한 작업 예상률 값을 세션의 완료된 총 작업에 더합니다. 이로 인해 같은 작업이 Sync Framework에서 보고될 때와 공급자에서 보고될 때 각각 한 번씩 모두 두 번 계산될 수 있습니다.

참고 항목

참조

ISyncSessionState 인터페이스

개념

동기화 진행률 보고