ошибка блокировки базы данных sqlite - PullRequest
1 голос
/ 04 мая 2011

Я занимаюсь разработкой приложения на c # с бэкэндом sqlite db. В моем приложении используются многопоточные концепции. Все темы будут вызывать указанный ниже код. тогда он выдаст ошибку, так как база данных заблокирована.

lock (localLockHandle)
        {

            SQLiteCommand cmd = conn.CreateCommand();
            cmd.CommandText = sqlExpr;
            int ireturn = cmd.ExecuteNonQuery();
            return ireturn;
        }

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

Спасибо

1 Ответ

1 голос
/ 04 мая 2011

Если я правильно понимаю ваш фрагмент кода, вы используете lock для объекта в локальной области видимости.Это будет означать, что другие потоки будут lock для другого объекта.

Попробуйте определить глобальную блокировку, например, так:

static readonly object DatabaseLock = new object()

и затем использовать lock(DatabaseLock) везде, где вы получаете доступ к базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...