SQLite.net多线程

时间:2014-06-11 17:06:35

标签: c# .net multithreading sqlite

我试图在多线程模式下在我的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

它没有任何改变。

非常感谢你......

2 个答案:

答案 0 :(得分:0)

你不应该使用SQLiteAsync.cs包装器来实现多线程吗?

SQliteAsyncConnection and Asynchronous API在页面下方。

答案 1 :(得分:0)

我回答了我的问题,因为事实上,我所实施的内容很有效,除了我写的代码:

static object _lock = new object();

所以它被定义为私人......

谢谢你。