2014-02-19 46 views
5

我們正在經歷使用Community.MvvmCross-SQLite的項目在Windows Phone上的應用mvvmcross幾個問題8.我們有一些後臺線程(使用Task.Run()),它讀取響應/寫入數據庫從服務器更新 - 因爲更新可能需要幾秒鐘,我們不希望UI凍結。如何使用MvvmCross-SQLite Community Edition在多線程應用程序中設置連接?

當運行應用程序,我們經歷了幾個崩潰,我們看到像「數據庫丟失或損壞」,和調試我們看到了崩潰從後臺線程訪問數據庫時的情況時消息。

我們一直在努力,在整個項目中使用一個共同的SqliteConnection,並且每次我們嘗試寫入我們在一個鎖()語句調用數據庫。

  • 可以使用相同的連接,還是應該爲每個操作創建新的連接?
  • 什麼是底層Community.CSharpLiteSqlite.WP7庫中的多線程支持的狀態?

回答

0

SQLite和多線程

的SQLite支持三種不同的線程模式:

1.單線程。在這種模式下,所有的互斥鎖都被禁用,並且SQLite不安全,可以同時在多個線程中使用。

2.多線程。在這種模式下,如果兩個或多個線程中沒有同時使用單個數據庫連接,則SQLite可以安全地用於多個線程。

3.Serialized。在序列化模式下,SQLite可以安全地由多個線程使用,沒有任何限制。

SqliteTheadSafe Documentatioon

+0

http://stackoverflow.com/questions/8227796/sqlite-database-is-locked-error-in-multithreads-application?rq=1 – Eldho

相關問題