Асинхронная синхронизация данных
Асинхронная синхронизация данных позволяет приложению SQL Server Compact 3.5 (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.
- Создайте объект Replication и установите значения его свойств.
- Создайте объект IAsyncResult и настройте его для метода BeginSynchronize объекта Replication.
- Передайте методу BeginSynchronize следующие свойства.
- Метод обратного вызова (событие AysncCallback).
- Метод обработки события OnStartTableUpload.
- Метод обработки события OnStartTableDownload.
- Метод обработки события OnSynchronization.
- Добавьте к методу обратного вызова код для вызова метода EndSynchronize.
- Вызовите метод AsyncWaitHandle объекта IAsyncResult.
- В обработчиках событий можно добавить код, который позволяет отображать текущее состояние синхронизации или отменять синхронизацию.
Примечание. |
---|
Отчеты о состоянии посылаются в четырех случаях: в начале выполнения передачи каждой пользовательской таблицы, в начале выполнения загрузки каждой пользовательской таблицы, при запуске посредника, а также при обновлении значения «процент завершения» посредника. |
Использование собственного интерфейса API
Для выполнения асинхронной синхронизации данных, как и для выполнения синхронной синхронизации, используется интерфейс ISSCEMerge. В отличие от приложений, в которых применяется управляемый код, асинхронная синхронизация данных является однопоточным процессом. Уведомления о синхронизации находятся в том же потоке, что и синхронизация. Для получения отчетов о состоянии синхронизации используется свойство SyncStatusReport интерфейса ISSCEMerge.
См. также
Основные понятия
Синхронизация данных (SQL Server Compact)
Синхронная синхронизация данных
Многопользовательский доступ и синхронизация
Другие ресурсы
Как синхронизировать данные в асинхронном режиме (программным путем)
Справка и поддержка
Получение помощи (SQL Server Compact 3.5 с пакетом обновления 1)