У меня есть приложение, в котором я использую Sql Compact 3.5 с VS2008. Я запускаю несколько потоков в моем приложении, которое связывается с компактной базой данных и обращается к строке. Он выбирает и удаляет эти строки способом, т.е. выбирает и передает приложению 5 строк и удаляет эти строки из таблицы. Он прекрасно работает с одним потоком, но если я использую несколько потоков, т.е. если запущено 3 или более потоков, я очень часто получаю ошибку TimeOut !!! Я увеличил свойство Time out в строке подключения, но оно не дало ожидаемого результата. Журнал ошибок выглядит следующим образом:
Тайм-аут SQL Server Compact в ожидании блокировки. Время блокировки по умолчанию составляет 2000 мс для устройств и 5000 мс для настольных компьютеров. Время ожидания блокировки по умолчанию можно увеличить в строке подключения с помощью свойства ssce: default timeout. [Идентификатор сеанса = 5, Идентификатор потока = 4204, Идентификатор процесса = 4808, Имя таблицы = XXX, Тип конфликта = x блокировка (блоки s), Ресурс = TAB]
Запрос, который я использую для получения, выглядит следующим образом:
»
выберите Top (5) * из таблицы TableName по идентификатору;
удалить из TableName, где находится id (выберите top (5) id из порядка TableName по id);
«
Есть ли способ, которым мы можем избежать этого исключения Time Out ???????
Приведенный выше запрос выполняется как транзакция в VS2008, одна из которых использует SQLCECommand, а другая - SqlCEDataAdapter.
Любая идея !!!!!!
Ответ