Sincronização de dados assíncronos
A sincronização de dados assíncronos permite que um aplicativo SQL Server Compact 3.5 (SQL Server Compact 3.5) continue processando outras informações enquanto aguarda a conclusão da sincronização de dados.
Por exemplo, suponha que seu aplicativo execute regularmente a sincronização de dados e envie muitos desses dados usando uma conexão lenta. Durante a sincronização de dados, o aplicativo não responderá à entrada do usuário. O usuário poderá achar que o aplicativo não está funcionando corretamente. Para tornar o aplicativo mais amigável ao usuário, durante a sincronização de dados, você pode querer exibir uma barra de progresso no dispositivo inteligente que mostre o status da sincronização. Usando a sincronização de dados assíncronos, você pode iniciar a sincronização de dados e, em seguida, interceptar eventos de sincronização à medida que eles ocorrem. Seu aplicativo pode exibir esses eventos para o usuário.
Dica
A sincronização de dados assíncronos também permite que você cancele uma sincronização de dados que já esteja em andamento.
Usando os métodos de sincronização de dados assíncronos
Se você estiver desenvolvendo seu aplicativo SQL Server Compact 3.5 usando o Microsoft .NET Compact Framework e uma das linguagens de programação gerenciadas (Microsoft Visual Basic ou Microsoft Visual C#), as chamadas assíncronas serão tratadas como outras chamadas assíncronas no Microsoft .NET Framework. Se você estiver desenvolvendo um aplicativo nativo usando o Microsoft Visual C++ for Devices, use a propriedade SyncStatusReport da interface ISSCEMerge.
Usando a API gerenciada
Há três tipos no espaço para nome System.Data.SqlServerCE usados na sincronização de dados assíncronos:
- OnStartTableUpload
Este evento ocorre quando cada tabela na assinatura é carregada para o Publicador. - OnStartTableDownload
Este evento ocorre quando cada tabela é retornada a partir do Publicador. - OnSynchronization
Este evento ocorre quando o reconciliador é iniciado ou quando seu código executa uma verificação de sincronização.
Você também usa os seguintes três métodos do objeto Replication:
- BeginSynchronize
Este método começa o processo de sincronização usando um objeto IAsyncResult . - EndSynchronize
Você chama EndSynchronize quando o servidor retorna uma mensagem de sincronização final. - CancelSynchronize
Você pode chamar o método CancelSynchronize para cancelar a sincronização a qualquer momento.
As etapas a seguir mostram o processo de execução da sincronização de dados assíncronos com a API gerenciada:
- Crie um objeto Replication e defina suas propriedades.
- Crie um objeto IAsyncResult e defina-o para o método BeginSynchronize do objeto Replication.
- Transmita as seguintes propriedades para o método BeginSynchronize:
- O método de retorno (evento AysncCallback).
- Um método para manipular o evento OnStartTableUpload.
- Um método para manipular o evento OnStartTableDownload.
- Um método para manipular o evento OnSynchronization.
- Adicione código para o método de retorno para chamar o método EndSynchronize.
- Chame o método AsyncWaitHandle do objeto IAsyncResult.
- Nos manipuladores de eventos, você pode adicionar código para informar o status atual da sincronização ou cancelá-la.
Dica
Os relatórios de status são enviados durante quatro eventos: no início de cada tabela de usuário que está sendo processada para carregamento, no início de cada tabela de usuário que está sendo processada para download, quando o reconciliador é iniciado e sempre que o valor “porcentagem completa” do reconciliador é atualizado.
Usando a API nativa
Assim como na sincronização de dados síncronos, use a interface ISSCEMerge para executar a sincronização de dados assíncronos. Diferente de processar em código gerenciado, a sincronização de dados assíncronos é ainda um processo de thread único. Notificações de sincronização ficam no mesmo thread da sincronização; use a propriedade SyncStatusReport na interface ISSCEMerge para recuperar relatórios de status da sincronização.
Consulte também
Conceitos
Sincronizando dados (SQL Server Compact)
Sincronização de dados síncronos
Sincronização e acesso multiusuário
Outros recursos
Como sincronizar dados de forma assíncrona (programaticamente)