Share via


Indication de la progression de la synchronisation

Microsoft Sync Framework signale la progression de la synchronisation à une application en utilisant l'événement ProgressChanged (pour le code managé) ou l'événement ISyncCallback::OnProgress (pour le code non managé). Lorsque cet événement est déclenché et que les informations qu'il communique dépendent de l'implémentation du fournisseur de source.

Signalement de chaque modification

Par défaut, Sync Framework envoie l'événement ProgressChanged (pour le code managé) ou l'événement ISyncCallback::OnProgress (pour le code non managé) une fois pour chaque modification appliquée par le fournisseur de destination. Sync Framework envoie également cet événement une fois après que chaque lot de modifications a été complètement appliqué.

Cette notification de progression par défaut est utilisée uniquement lorsque le fournisseur de source ne spécifie pas d'estimations de travail pour les modifications et les lots de modifications.

Indication du travail estimé

Sync Framework peut également signaler les estimations de travail pour les modifications et les lots de modifications appliqués. Le fournisseur de source doit estimer à la fois le travail requis pour appliquer chaque modification et le travail requis pour appliquer complètement chaque lot de modifications. Le fournisseur de source doit également estimer le travail restant dans la session de synchronisation. Si le fournisseur de source a spécifié ces valeurs, pendant qu'un lot de modifications est appliqué, Sync Framework totalise le travail effectué lorsque chaque modification, conflit ou lot de modifications est appliqué par le fournisseur de destination. Sync Framework envoie alors régulièrement l'événement ProgressChanged (pour le code managé) ou l'événement ISyncCallback::OnProgress (pour le code non managé) pour signaler le total actuel de travail effectué et le travail total dans la session. Sync Framework envoie également cet événement après que chaque lot de modifications a été complètement appliqué.

Pour signaler la progression du travail estimé, le fournisseur de source doit spécifier le travail estimé pour chaque modification et lot de modifications, et le travail restant pour la session comme décrit dans le tableau suivant.

Type de travail estimé Spécifier en utilisant le code managé Spécifier en utilisant le code non managé

Modification

WorkEstimate

Paramètre dwWorkForChange de ISyncChangeBatchBase::AddItemMetadataToGroup ou ISyncChangeBatch::AddLoggedConflict. Sync Framework fournit également cette valeur via ISyncChange::SetWorkEstimate.

Lot de modifications

BatchWorkEstimate

ISyncChangeBatchBase::SetWorkEstimateForBatch

Session

RemainingSessionWorkEstimate

ISyncChangeBatchBase::SetRemainingWorkEstimateForSession

Indication de la progression personnalisée

Les fournisseurs peuvent également envoyer une notification de progression à tout moment en appelant OnProgressChanged (pour le code managé) ou ISyncSessionState::OnProgress (pour le code non managé). Lorsque l'étape de synchronisation est spécifiée comme ChangeApplication (pour le code managé) ou SPS_CHANGE_APPLICATION (pour le code non managé), Sync Framework cumule le travail total achevé chaque fois que la notification de progression est envoyée. Sync Framework interprète également le travail total spécifié comme travail restant pour la session et calcule le travail total pour la session en ajoutant le travail total spécifié à la valeur cumulée pour le travail achevé. Sync Framework passe ensuite ces valeurs calculées à l'événement de notification de progression. Lorsque l'étape de synchronisation est toute autre valeur valide, les valeurs d'estimation du travail sont passées directement à l'événement de notification de progression.

Des précautions doivent être prises pour éviter de signaler deux fois le même travail lorsque le fournisseur de source spécifie des estimations de travail, et le fournisseur de destination envoie des notifications de progression et spécifie ChangeApplication (pour le code managé) ou SPS_CHANGE_APPLICATION (pour le code non managé) pour l'état de synchronisation. La raison en est que Sync Framework totalise la valeur du travail réalisé chaque fois qu'une notification de progression est envoyée durant l'application des modifications. Si un fournisseur envoie sa propre notification de progression, Sync Framework ajoute les valeurs de travail estimé spécifiées par le fournisseur au travail total réalisé pour la session. Le même travail peut alors être compté deux fois : une fois lorsqu'il est signalé par Sync Framework et l'autre fois lorsqu'il est signalé par le fournisseur.

Voir aussi

Concepts

Fournisseurs de synchronisation
Réponse aux événements de synchronisation