ISyncSessionState::OnProgress

Notifica el progreso de la sincronización a la aplicación.

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

Parámetros

  • provider
    [in] Función del proveedor que envía este evento.
  • syncStage
    [in] Fase actual de la sesión de sincronización.
  • dwCompletedWork
    [in] Cantidad de trabajo que se ha completado en la sesión. Este valor se interpreta como parte de dwTotalWork.
  • dwTotalWork
    [in] Trabajo total de la sesión.

Valor devuelto

  • S_OK

  • E_INVALIDARG si provider o syncStage no es un valor válido.

Notas

Este método se puede usar para notificar el progreso personalizado a la aplicación. Cuando un proveedor llama a este método, se provoca el evento ISyncCallback::OnProgress.

Cuando se especifica SPS_CHANGE_APPLICATION para syncStage, Sync Framework acumula el trabajo total completado especificado por dwCompletedWork siempre que se llama a ISyncSessionState::OnProgress. Sync Framework también interpreta dwTotalWork como el trabajo restante para la sesión y calcula el trabajo total para la sesión sumando dwTotalWork al valor acumulado para el trabajo completado. Sync Framework pasa entonces estos valores calculados a ISyncCallback::OnProgress. Cuando syncStage es cualquier otro valor válido, se pasa directamente dwCompletedWork y dwTotalWork a ISyncCallback::OnProgress.

Cuando el proveedor de origen especifica estimaciones de trabajo, pueden producirse resultados inesperados si un proveedor llama a ISyncSessionState::OnProgress y especifica SPS_CHANGE_APPLICATION para syncStage. Esto se debe a que Sync Framework suma el valor del trabajo completado cada vez que se envían notificaciones de progreso durante la aplicación de cambios. Si un proveedor envía su propia notificación de progreso y especifica SPS_CHANGE_APPLICATION para syncStage, Sync Framework agrega los valores de trabajo estimado especificados por el proveedor al trabajo completado total para la sesión. Esto puede dar lugar a que el mismo trabajo se contabilice dos veces: una vez cuando es notificado por Sync Framework y otra vez cuando es notificado por el proveedor.

Vea también

Referencia

Interfaz ISyncSessionState

Conceptos

Notificar el progreso de la sincronización