Блокирует ли поставщик sqlceclientsyncprovider файл .sdf во время синхронизации на мобильном устройстве? - PullRequest
1 голос
/ 03 марта 2012

Я использую SQL Server Compact Edition 3.5 на мобильном устройстве. Синхронизация с использованием каркаса синхронизации работает нормально в контексте того, что пользователь делает это с помощью нажатия кнопки и ожидает его завершения. Там нет проблем.

Я недавно пытался сделать это в фоновом потоке, который запускается каждые 'n' минут или около того. Это также работает нормально, если я не использую базу данных в то время. Если я использую базу данных, все приложение блокируется, и я еще не нашел конкретного исключения, которое должно происходить. Я буду продолжать это делать, но это не часть моего вопроса.

Мой вопрос заключается в том, вызывает ли SqlCeClientSyncProvider исключительную блокировку или иным образом физически блокирует файл .SDF во время синхронизации? Если да, есть ли варианты переопределить это поведение?

1 Ответ

1 голос
/ 05 марта 2012

Нет, он не блокирует файл .SDF, после тестирования я вижу, что самое большее он создает транзакцию с уровнем изоляции зафиксированного чтения.У меня была проблема взаимоблокировки в моем собственном поточном коде, которую я смог решить после тщательного рефакторинга.Я вызывал событие SyncBegun до того, как произошла синхронизация, а затем вызывал последующее событие SyncEnded.Они использовали отдельные замки, которые наступали друг другу на ноги.

...