Я делал это не в C #, а в Android, но обошел эту ошибку «база данных заблокирована», оставив базу данных sqlite всегда открытой в пределах класса-оболочки, которому она принадлежит, в течение всего времени существования класса-оболочки , Каждая вставка, выполняемая в этом классе, может быть в своем собственном потоке (потому что, в зависимости от вашей ситуации с хранением данных, SD-карты в зависимости от памяти устройства и т. Д., Запись в БД может занять много времени), и я даже попытался ее удушить, делая около дюжина потоков вставки одновременно, и каждый из них был обработан очень хорошо, потому что метод вставки не должен беспокоиться об открытии / закрытии БД.
Я не уверен, что постоянные жизненные циклы БД считаются хорошим стилем (хотя в большинстве случаев это может считаться плохим), но пока он работает довольно хорошо.