chr*_*lch 5 sqlite multithreading mvvmcross windows-phone-8
我们在Windows Phone 8上的mvvmcross应用程序中使用Community.MvvmCross-SQLite项目时遇到一些问题.我们有一些后台线程(使用Task.Run())读取/写入数据库以响应来自服务器 - 由于更新可能需要几秒钟,因此我们不希望UI冻结.
在运行应用程序时,我们会遇到一些崩溃,我们会看到"数据库丢失或损坏"等消息,在调试情况时,我们会看到从后台线程访问数据库时崩溃.
我们尝试在整个项目中使用一个通用的SqliteConnection,每次我们尝试写入数据库时,我们都会在lock()语句中封装调用.
SQLite 和多线程
SQLite 支持三种不同的线程模式:
1.单线程。在这种模式下,所有互斥体都被禁用,并且 SQLite 在多个线程中同时使用是不安全的。
2.多线程。在此模式下,只要两个或多个线程中没有同时使用单个数据库连接,SQLite 就可以安全地由多个线程使用。
3.系列化。在序列化模式下,SQLite可以不受限制地被多个线程安全地使用。
| 归档时间: |
|
| 查看次数: |
279 次 |
| 最近记录: |