UWP SQLite разъяснение параллелизма - PullRequest
0 голосов
/ 11 мая 2019

В моем приложении UWP у меня есть класс с именем DBContext, который обеспечивает прямое соединение с БД SQLite одноэлементным способом. У меня есть несколько тяжелых операторов записи в БД для периодического выполнения, которые могут занять более 10 секунд.

Мой вопрос заключается в том, что происходит, когда 1 поток запрашивает соединение, и мой DBContext предоставит его, и это соединение запускает транзакцию, для завершения которой требуется 10 секунд.

Теперь предположим, что другой поток также запрашивает соединение, и мой класс DBContext будет возвращать то же соединение, которое было создано для вышеупомянутой задачи (поскольку это одиночный код), и этот поток также использует то же соединение и пытается записать в тот же SQLite. DB

ПРИМЕЧАНИЕ. Это реальный сценарий, и я получаю исключения «Занят» и «БД заблокированы» из SQLite. Пожалуйста, дайте мне знать хороший подход к доступу к БД, включая лучшие практики использования SQLite в UWP.

ПРИМЕЧАНИЕ. Режим WAL также включен в SQLite, но все еще получает исключение «Занят».

Заранее спасибо.

...