Sincronización de datos asincrónica

La sincronización de datos asincrónica permite que una aplicación de SQL Server Compact 3.5 continúe procesando otra información mientras espera a que se complete la sincronización de datos.

Por ejemplo, suponga que su aplicación realiza regularmente la sincronización de datos y envía muchos datos a través de una conexión lenta. Durante la sincronización de datos, la aplicación no responderá a los datos introducidos por el usuario. El usuario puede pensar que la aplicación no funciona correctamente. Para que la aplicación sea más sencilla para el usuario durante la sincronización de datos, puede que desee que se muestre una barra indicadora de progreso en el dispositivo inteligente que muestra el estado de la sincronización. Utilizando la sincronización de datos asincrónica, puede iniciar la sincronización de datos y después recoger los eventos de sincronización a medida que se producen. Después, su aplicación puede mostrar dichos eventos al usuario.

Nota

El uso de la sincronización de datos asincrónica le permite cancelar una sincronización de datos que ya está en progreso.

Usar los métodos de sincronización de datos asincrónica

Si está desarrollando una aplicación SQL Server Compact 3.5 utilizando Microsoft .NET Compact Framework y uno de los lenguajes de programación administrados (Microsoft Visual Basic o Microsoft Visual C#), las llamadas asincrónicas se administran como las demás llamadas asincrónicas en Microsoft .NET Framework. Si está desarrollando una aplicación nativa con Microsoft Visual C++ for Devices, debe utilizar la propiedad SyncStatusReport de la interfaz ISSCEMerge.

Usar la API administrada

Existen tres tipos en el espacio de nombres System.Data.SqlServerCE que se utilizan en la sincronización de datos asincrónica:

  • OnStartTableUpload

    Este evento se produce cuando se carga cada tabla de la suscripción en el Publicador.

  • OnStartTableDownload

    Este evento se produce cuando se devuelve cada tabla desde el Publicador.

  • OnSynchronization

    Este evento se produce cuando se inicia el reconciliador, o cuando el código realiza una comprobación de sincronización.

También se utilizan los siguientes tres métodos del objeto Replication:

  • BeginSynchronize

    Este método inicia el proceso de sincronización utilizando un objetoIAsyncResult.

  • EndSynchronize

    Se llama a EndSynchronize cuando el servidor devuelve un mensaje de fin de sincronización.

  • CancelSynchronize

    Puede llamar al método CancelSynchronize para cancelar la sincronización en cualquier momento.

Los siguientes pasos muestran el proceso de realización de sincronización de datos asincrónica con la API administrada:

  1. Cree un objeto Replication y defina sus propiedades.

  2. Cree un objeto IAsyncResult y defínalo en el método BeginSynchronize del objeto Replication.

  3. Pase las siguientes propiedades al método BeginSynchronize:

    • El método de devolución de llamada (evento AysncCallback).

    • Un método para controlar el evento OnStartTableUpload.

    • Un método para controlar el evento OnStartTableDownload.

    • Un método para controlar el evento OnSynchronization.

  4. Agregue código al método de devolución de llamada para llamar al método EndSynchronize.

  5. Llame al método AsyncWaitHandle del objeto IAsyncResult.

  6. En los controladores de eventos, puede agregar código para informar acerca del estado actual de la sincronización o para cancelar la sincronización.

Nota

Los informes de estado se envían durante cuatro eventos: al inicio de cada tabla de usuario que se procesa para la carga, al inicio de cada tabla de usuario que se procesa para la descarga, cuando se inicia el reconciliador y siempre que se actualiza el valor "porcentaje completado" del reconciliador.

Usar la API nativa

Al igual que con la sincronización de datos sincrónica, puede utilizar la interfaz ISSCEMerge para realizar la sincronización de datos asincrónica. Al contrario que el proceso del código administrado, la sincronización de datos asincrónica sigue siendo un proceso con un solo subproceso. Las notificaciones de sincronización se encuentran en el mismo subproceso que la sincronización; se utiliza la propiedad SyncStatusReport de la interfaz ISSCEMerge para recuperar los informes de estado de la sincronización.

Vea también

Otros recursos

Sincronizar datos (SQL Server Compact)

Sincronización de datos sincrónica

Sincronización y acceso multiusuario

Cómo sincronizar datos de forma asincrónica (mediante programación)