Поделиться через


Асинхронная синхронизация данных

Асинхронная синхронизация данных позволяет приложению SQL Server Compact 3.5 обрабатывать данные и одновременно ожидать завершения синхронизации.

Допустим, что приложение регулярно выполняет синхронизацию данных и отправляет большой объем данных по медленному соединению. Во время синхронизации приложение не будет реагировать на команды пользователя. В результате пользователь может решить, что приложение работает ненадлежащим образом. Чтобы повысить удобство работы с приложением во время синхронизации, можно отобразить на интеллектуальном устройстве индикатор выполнения, который будет показывать состояние синхронизации. Применение асинхронной синхронизации позволяет начать синхронизацию, а затем обрабатывать события синхронизации по мере их возникновения и отображать пользователю сведения об этих событиях.

Примечание

Использование асинхронной синхронизации позволяет отменить синхронизацию в процессе выполнения.

Использование методов асинхронной синхронизации данных

Если приложение SQL Server Compact 3.5 разрабатывается с использованием Microsoft .NET Compact Framework и одного из управляемых языков программирования (Microsoft Visual Basic или Microsoft Visual C#), асинхронные вызовы обрабатываются так же, как и другие асинхронные вызовы в Microsoft .NET Framework. При разработке собственного приложения с помощью Microsoft Visual C++ for Devices необходимо использовать свойство SyncStatusReport интерфейса ISSCEMerge.

Использование управляемого интерфейса API

В пространстве имен System.Data.SqlServerCE существуют три типа, используемые при асинхронной синхронизации данных.

  • OnStartTableUpload

    Это событие возникает каждый раз, когда подписчик начинает передачу таблицы издателю.

  • OnStartTableDownload

    Это событие возникает каждый раз, когда подписчик начинает получение таблицы от издателя.

  • OnSynchronization

    Это событие возникает, когда запускается процесс reconciler или в приложении выполняется проверка синхронизации.

Кроме того, можно использовать следующие три метода объекта Replication.

  • BeginSynchronize

    Данный метод начинает процесс синхронизации с помощью объекта IAsyncResult.

  • EndSynchronize

    Метод EndSynchronize вызывается, когда сервер возвращает сообщение об окончании синхронизации.

  • CancelSynchronize

    Метод CancelSynchronize позволяет в любой момент отменить синхронизацию.

Ниже перечислены этапы выполнения асинхронной синхронизации данных при помощи управляемого интерфейса API.

  1. Создайте объект Replication и установите значения его свойств.

  2. Создайте объект IAsyncResult и настройте его для метода BeginSynchronize объекта Replication.

  3. Передайте методу BeginSynchronize следующие свойства.

    • Метод обратного вызова (событие AysncCallback).

    • Метод обработки события OnStartTableUpload.

    • Метод обработки события OnStartTableDownload.

    • Метод обработки события OnSynchronization.

  4. Добавьте к методу обратного вызова код для вызова метода EndSynchronize.

  5. Вызовите метод AsyncWaitHandle объекта IAsyncResult.

  6. В обработчиках событий можно добавить код, который позволяет отображать текущее состояние синхронизации или отменять синхронизацию.

Примечание

Отчеты о состоянии отправляются в четырех случаях: в начале выполнения передачи каждой пользовательской таблицы, в начале выполнения загрузки каждой пользовательской таблицы, при запуске посредника, а также при обновлении значения «процент завершения» посредника.

Использование собственного интерфейса API

Для выполнения асинхронной синхронизации данных, как и для выполнения синхронной синхронизации, используется интерфейс ISSCEMerge. В отличие от приложений, в которых применяется управляемый код, асинхронная синхронизация данных является однопоточным процессом. Уведомления о синхронизации находятся в том же потоке, что и синхронизация. Для получения отчетов о состоянии синхронизации используется свойство SyncStatusReport интерфейса ISSCEMerge.

См. также

Другие ресурсы

Синхронизация данных (SQL Server Compact)

Синхронная синхронизация данных

Многопользовательский доступ и синхронизация

Как синхронизировать данные в асинхронном режиме (программным путем)