Condividi tramite


Sincronizzazione di dati asincroni

La sincronizzazione dei dati asincroni consente a un'applicazione SQL Server 2005 Compact Edition (SQL Server Compact Edition) di continuare a elaborare le altre informazioni in attesa del completamento della sincronizzazione dei dati.

Si supponga, ad esempio, di eseguire regolarmente la sincronizzazione dei dati dell'applicazione e di inviare una grande quantità di dati tramite una connessione lenta. Durante la sincronizzazione dei dati, l'applicazione non risponderà all'input dell'utente, il quale potrebbe credere che l'applicazione non stia funzionando correttamente. Per rendere l'applicazione più semplice da usare durante la sincronizzazione dei dati, è possibile visualizzare un indicatore di stato sullo smart device che mostri lo stato della sincronizzazione. Utilizzando la sincronizzazione dei dati asincroni, è possibile avviare la sincronizzazione dei dati e quindi intercettare gli eventi di sincronizzazione non appena si verificano. Questi eventi potranno quindi essere visualizzati all'utente nell'applicazione.

[!NOTA] L'utilizzo della sincronizzazione dei dati asincroni consente inoltre di annullare una sincronizzazione di dati già in corso.

Utilizzo dei metodi di sincronizzazione dei dati asincroni

Se si sta sviluppando l'applicazione SQL Server Compact Edition utilizzando Microsoft .NET Compact Framework e uno dei linguaggi di programmazione gestita (Microsoft Visual Basic o Microsoft Visual C#), le chiamate asincrone vengono gestite come le altre chiamate asincrone in Microsoft .NET Framework. Se si sta sviluppando un'applicazione nativa tramite Microsoft Visual C++ for Devices, si utilizza la proprietà SyncStatusReport dell'interfaccia ISSCEMerge.

Utilizzo dell'API gestita

Nello spazio dei nomi System.Data.SqlServerCE esistono tre tipi utilizzati nella sincronizzazione dei dati asincroni:

  • OnStartTableUpload
    Questo evento si verifica quando ogni tabella della sottoscrizione viene caricata sul server di pubblicazione.
  • OnStartTableDownload
    Questo evento si verifica quando ogni tabella viene restituita dal server di pubblicazione.
  • OnSynchronization
    Questo evento si verifica quando viene avviato il riconciliatore o quando il codice esegue un controllo della sincronizzazione.

Si utilizzano inoltre i tre metodi seguenti dell'oggetto Replication:

  • BeginSynchronize
    Questo metodo consente di avviare il processo di sincronizzazione utilizzando un oggetto IAsyncResult.
  • EndSynchronize
    EndSynchronize deve essere chiamato quando il server restituisce un messaggio di fine sincronizzazione.
  • CancelSynchronize
    È possibile chiamare il metodo CancelSynchronize per annullare la sincronizzazione in qualsiasi momento.

I passaggi seguenti illustrano il processo di esecuzione della sincronizzazione dei dati asincroni con l'API gestita:

  1. Creare un oggetto Replication e impostarne le proprietà.
  2. Creare un oggetto IAsyncResult e impostarlo sul metodo BeginSynchronize dell'oggetto Replication.
  3. Passare le proprietà seguenti al metodo BeginSynchronize:
    • Il metodo di richiamata (evento AysncCallback).
    • Un metodo per gestire l'evento OnStartTableUpload.
    • Un metodo per gestire l'evento OnStartTableDownload.
    • Un metodo per gestire l'evento OnSynchronization.
  4. Aggiungere codice al metodo di richiamata per chiamare il metodo EndSynchronize.
  5. Chiamare il metodo AsyncWaitHandle dell'oggetto IAsyncResult.
  6. Nei gestori eventi è possibile aggiungere codice per indicare lo stato corrente della sincronizzazione o per annullare la sincronizzazione.

[!NOTA] I rapporti di stato vengono inviati durante quattro eventi: all'avvio dell'elaborazione di ogni tabella utente per il caricamento, all'avvio dell'elaborazione di ogni tabella utente per il download, quando il riconciliatore viene avviato e quando il valore di "percentuale completata" del riconciliatore viene aggiornato.

Utilizzo dell'API nativa

Come per la sincronizzazione dei dati sincroni, per eseguire la sincronizzazione dei dati asincroni si utilizza l'interfaccia ISSCEMerge. Diversamente dal processo nel codice gestito, la sincronizzazione dei dati asincroni è un processo a thread singolo. Le notifiche relative alla sincronizzazione si trovano nello stesso thread della sincronizzazione. Per recuperare i rapporti sullo stato della sincronizzazione, si utilizza la proprietà SyncStatusReport dell'interfaccia ISSCEMerge.

Vedere anche

Attività

Procedura: Sincronizzazione asincrona dei dati (a livello di programmazione)

Concetti

Sincronizzazione dei dati (SQL Server Compact Edition)
Sincronizzazione di dati sincroni
Accesso multiutente e sincronizzazione

Guida in linea e informazioni

Assistenza su SQL Server Compact Edition