2017-01-16 58 views
4

我正在使用SQLite的.NET應用程序。按照SQLite documentation,它支持多線程並可用於以下3種模式之一:用於.NET的System.Data.SQLite中的Serealized模式

  1. 單線程。在這種模式下,所有的互斥鎖都被禁用,並且SQLite不安全,可以同時在多個線程中使用。
  2. 多線程。在這種模式下,如果兩個或多個線程中沒有同時使用單個數據庫連接,則SQLite可以安全地用於多個線程。
  3. 序列化。在序列化模式下,SQLite可以安全地由多個線程使用,沒有任何限制。

根據這些模式,我試圖使用序列化,我在多個任務之間共享單個連接。但我得到的錯誤爲「由於對象的當前狀態,操作無效

我想這是由於跨任務共享單個連接。但按照序列化模式,我應該能夠共享連接,而不需要執行任何明確的鎖定或互斥鎖實現。 任何人都可以引導我如何在.NET應用程序中使用序列化模式?是否需要以某種方式提及連接字符串?

在此先感謝!

+0

每個線程只使用一個連接。 –

+0

但是這將是「多線程」線程模式。我不想在每次與SqliteDB交談時創建連接,因此需要進行「序列化」線程模式。 –

+0

@CL。 System.Data.SQLite是否真的支持「序列化」線程模式? –

回答

1

序列化是默認模式。不要再關閉打開的連接,而應該使用同一個連接,而不必關閉它。 SQLite將負責休息。希望這可以幫助。