Асинхронная синхронизация данных
Асинхронная синхронизация данных позволяет приложению 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)
Синхронная синхронизация данных
Многопользовательский доступ и синхронизация
Как синхронизировать данные в асинхронном режиме (программным путем)