Compartilhar via


ISyncSessionState::OnProgress

Relata o progresso da sincronização ao aplicativo.

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

Parâmetros

  • provider
    [in] A função do provedor que está enviando esse evento.
  • syncStage
    [in] O estágio atual da sessão de sincronização.
  • dwCompletedWork
    [in] A quantidade de trabalho concluída atualmente na sessão. Esse valor é interpretado como parte de dwTotalWork.
  • dwTotalWork
    [in] O trabalho total para a sessão.

Valor de retorno

  • S_OK

  • E_INVALIDARG quando provider ou syncStage não é um valor válido.

Comentários

Esse método pode ser usado para relatar o progresso personalizado ao aplicativo. Quando um provedor chama esse método, o evento ISyncCallback::OnProgress é gerado.

Quando SPS_CHANGE_APPLICATION é especificado para syncStage, o Sync Framework acumula o trabalho concluído total especificado por dwCompletedWork sempre que esse ISyncSessionState::OnProgress é chamado. O Sync Framework também interpreta dwTotalWork como o trabalho restante para a sessão e calcula o trabalho total para a sessão somando dwTotalWork ao valor acumulado para trabalho concluído. Em seguida, o Sync Framework passa esses valores calculados para ISyncCallback::OnProgress. Quando syncStage é qualquer outro valor válido, dwCompletedWork e dwTotalWork são passados diretamente para ISyncCallback::OnProgress.

Quando o provedor de origem especifica estimativas de trabalho, pode haver resultados inesperados quando um provedor chama ISyncSessionState::OnProgress e especifica SPS_CHANGE_APPLICATION para syncStage. Isso ocorre porque o Sync Framework calcula o valor do trabalho concluído sempre que são enviadas notificações de progresso durante a aplicação de alterações. Se um provedor enviar sua própria notificação de progresso e especificar SPS_CHANGE_APPLICATION para syncStage, o Sync Framework adicionará os valores de estimativa de trabalho especificados pelo provedor ao trabalho total concluído da sessão. Isso pode fazer com que o mesmo trabalho seja contado duas vezes: uma vez quando ele é relatado pelo Sync Framework e outra quando é relatado pelo provedor.

Consulte também

Referência

Interface ISyncSessionState

Conceitos

Relatando o progresso da sincronização