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 Estrutura de sincronização acumula o trabalho concluído total especificado por dwCompletedWork sempre que esse ISyncSessionState::OnProgress é chamado. O Estrutura de sincronização 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 Estrutura de sincronização 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 Estrutura de sincronização 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 Estrutura de sincronização 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 Estrutura de sincronização e outra quando é relatado pelo provedor.