2017-01-16 4 views
4

Я работаю над .NET-приложением, использующим SQLite. В соответствии с SQLite documentation он поддерживает многопоточность и может использоваться в одном из следующих трех режимов:Serealized mode в System.Data.SQLite for .NET

  1. Однопоточный. В этом режиме все мьютексы отключены, и SQLite небезопасно использовать более чем в одном потоке одновременно.
  2. Multi-thread. В этом режиме SQLite можно безопасно использовать несколькими потоками при условии, что одно соединение с базой данных не используется одновременно в двух или более потоках.
  3. Серийный номер. В сериализованном режиме SQLite можно безопасно использовать несколькими потоками без ограничений.

В соответствии с этими режимами я пытаюсь использовать Serialized, где я использую одно соединение для нескольких задач. Но я получаю ошибку как «Операция недействительна из-за текущего состояния объекта.«

Я предполагаю, что это связано с совместным использованием единого соединения между задачами. Но в соответствии с Сериализованным режимом я должен иметь возможность обмениваться соединением без какой-либо явной реализации блокировки или мьютекса. Может ли кто-нибудь мне посоветовать, как я могу использовать Serialized mode в приложении .net? Нужно ли, чтобы строка подключения была упомянута определенным образом?

Спасибо заранее!

+0

Просто используйте одно соединение для каждой нити. –

+0

Но это будет режим многопоточной резьбы. Я не хочу создавать соединение каждый раз, когда я общаюсь с SqliteDB, поэтому перехожу к режиму потоковой обработки «Serialized». –

+0

@CL. Действительно ли System.Data.SQLite поддерживает режим «Serialized» Threading? –

ответ

1

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

 Смежные вопросы

  • Нет связанных вопросов^_^