我试图在多线程模式下在我的WPF应用程序中使用SQLite。我是C#的初学者,我已经阅读了很多关于SQLite和多线程的帖子,但是......不能实现我想做的事情......
我已经制作了一个解析不同文件的backgroundWorker,然后我想将每个文件的结果插入到一个数据库中。
我正在使用SQLite.net PCL。
我不会发布所有代码,除非有人问我,但是为了做一些测试,我做了类似的事情:
lock (_lock)
{
using (var test = new SQLiteConnection(new SQLitePlatformWin32(), "test.s3db"))
{
test.Insert(new MyClassWhichHaveAllField(){Title="XXX"});
}
}
_lock定义为:
public static object _lock = new object();
在我的backgroundWorker实现中,以及静态成员。
即使我放了锁,我收到异常" SQLite.Net.SQLiteException:无法打开数据库文件:recipes.s3db(误用)"
我尝试添加一些SQLiteOpenFlags,如:
SQLiteOpenFlags.FullMutex
它没有任何改变。
非常感谢你......
答案 0 :(得分:0)
你不应该使用SQLiteAsync.cs包装器来实现多线程吗?
答案 1 :(得分:0)
我回答了我的问题,因为事实上,我所实施的内容很有效,除了我写的代码:
static object _lock = new object();
所以它被定义为私人......
谢谢你。