Асинхронная синхронизация данных
Асинхронная синхронизация данных позволяет приложению SQL Server 2005 Compact Edition (SQL Server Compact Edition) обрабатывать данные и одновременно ожидать завершения синхронизации.
Допустим, что приложение регулярно выполняет синхронизацию данных и отправляет большой объем данных по медленному соединению. Во время синхронизации приложение не будет реагировать на команды пользователя. В результате пользователь может решить, что приложение работает ненадлежащим образом. Чтобы повысить удобство работы с приложением во время синхронизации, можно отобразить на смарт-устройстве индикатор выполнения, который будет показывать состояние синхронизации. Применение асинхронной синхронизации позволяет начать синхронизацию, а затем обрабатывать события синхронизации по мере их возникновения и отображать пользователю сведения об этих событиях.
Примечание. |
---|
Использование асинхронной синхронизации позволяет отменить синхронизацию в процессе выполнения. |
Использование методов асинхронной синхронизации данных
Если приложение SQL Server Compact Edition разрабатывается с использованием 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.
- В обработчиках событий можно добавить код, который позволяет отображать текущее состояние синхронизации или отменять синхронизацию.
Примечание. |
---|
Status reports are sent during four events: at the start of each user table being processed for upload, at the start of each user table being processed for download, when the reconciler is started, and whenever the reconciler "percent complete" value is updated. |
Использование собственного интерфейса API
Для выполнения асинхронной синхронизации данных, как и для выполнения синхронной синхронизации, используется интерфейс ISSCEMerge. В отличие от приложений, в которых применяется управляемый код, асинхронная синхронизация данных является однопотоковым процессом. Уведомления о синхронизации находятся в том же потоке, что и синхронизация. Для получения отчетов о состоянии синхронизации используется свойство SyncStatusReport интерфейса ISSCEMerge.
См. также
Задачи
Как синхронизировать данные в асинхронном режиме (программным путем)
Основные понятия
Синхронизация данных (SQL Server Compact Edition)
Синхронная синхронизация данных
Многопользовательский доступ и синхронизация