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] Rol 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 genera 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 hacer que el mismo trabajo se cuente dos veces: una cuando lo notifica Sync Framework y otra cuando lo notifica el proveedor.