Synchronisation asynchrone des données
La synchronisation asynchrone des données permet à une application SQL Server 2005 Compact Edition (SQL Server Compact Edition) de continuer à traiter d'autres informations tout en attendant que la synchronisation des données soit terminée.
Imaginons, par exemple, une application qui effectue régulièrement une synchronisation des données et envoie de grandes quantités de données via une connexion lente. Pendant la synchronisation des données, l'application ne répond pas aux entrées utilisateur. L'utilisateur peut alors penser que l'application ne fonctionne pas correctement. Pour rendre l'application plus conviviale au cours de la synchronisation des données, vous pouvez afficher une barre de progression sur l'appareil de type « smart device » afin de montrer l'état de la synchronisation. À l'aide de la synchronisation asynchrone des données, vous pouvez démarrer la synchronisation des données, puis intercepter les événements de la synchronisation lorsqu'ils se produisent. L'application peut alors afficher ces événements à l'utilisateur.
Remarque : |
---|
L'utilisation de la synchronisation asynchrone des données vous permet également d'annuler une synchronisation des données qui est déjà en cours. |
Utilisation des méthodes de synchronisation asynchrone des données
Si vous développez votre application SQL Server Compact Edition à l'aide du Microsoft .NET Compact Framework et de l'un des langages de programmation managés (Microsoft Visual Basic ou Microsoft Visual C#), les appels asynchrones sont gérés comme les autres appels asynchrones dans le Microsoft .NET Framework. Si vous développez une application native à l'aide de Microsoft Visual C++ for Devices, vous utilisez la propriété SyncStatusReport de l'interface ISSCEMerge.
Utilisation de l'API managée
Trois types d'événements dans l'espace de noms System.Data.SqlServerCE sont utilisés dans la synchronisation asynchrone des données :
- OnStartTableUpload
Cet événement se produit lorsque chaque table de l'abonnement est téléchargée vers le serveur de publication. - OnStartTableDownload
Cet événement se produit lorsque chaque table est renvoyée du serveur de publication. - OnSynchronization
Cet événement se produit lorsque le réconciliateur est démarré ou que le code effectue une vérification de la synchronisation.
Vous utilisez également les trois méthodes suivantes de l'objet Replication :
- BeginSynchronize
Cette méthode commence le processus de synchronisation à l'aide d'un objet IAsyncResult . - EndSynchronize
Vous appelez EndSynchronize lorsque le serveur renvoie un message de fin de synchronisation. - CancelSynchronize
Vous pouvez appeler la méthode CancelSynchronize pour annuler à tout moment la synchronisation.
Les étapes suivantes montrent le processus de synchronisation asynchrone des données avec l'API managée :
- Créez un objet Replication et définissez ses propriétés.
- Créez un objet IAsyncResult et définissez-le avec la méthode BeginSynchronize de l'objet Replication.
- Transférez les propriétés suivantes à la méthode BeginSynchronize :
- La méthode de rappel (événement AysncCallback).
- Une méthode pour gérer l'événement OnStartTableUpload.
- Une méthode pour gérer l'événement OnStartTableDownload.
- Une méthode pour gérer l'événement OnSynchronization.
- Ajoutez du code à la méthode de rappel pour appeler la méthode EndSynchronize.
- Appelez la méthode AsyncWaitHandle de l'objet IAsyncResult.
- Dans les gestionnaires d'événements, vous pouvez ajouter du code pour signaler l'état actuel de la synchronisation ou pour l'annuler.
Remarque : |
---|
Les rapports d'état sont envoyés lors de quatre événements : au début du téléchargement de chaque table utilisateur vers le serveur, au début du téléchargement de chaque table utilisateur, lorsque le réconciliateur est démarré et lorsque la valeur « Pourcentage accompli » du réconciliateur est mise à jour. |
Utilisation de l'API native
Comme pour la synchronisation synchrone des données, vous utilisez l'interface ISSCEMerge pour effectuer une synchronisation asynchrone des données. Contrairement au processus en code managé, la synchronisation asynchrone des données est toujours un processus monothread. Les notifications de synchronisation sont sur le même thread que la synchronisation ; vous utilisez la propriété SyncStatusReport de l'interface ISSCEMerge pour extraire les rapports d'état de synchronisation.
Voir aussi
Tâches
Procédure : synchroniser de manière asynchrone des données (par programme)
Concepts
Synchronisation des données (SQL Server Compact Edition)
Synchronisation de données synchrones
Accès multi-utilisateur et synchronisation