获取错误 System.IO.IOException:'The process cannot access the file'
Getting error System.IO.IOException: 'The process cannot access the file'
我正在开发一个多线程的小应用程序。我决定使用 LiteDB 来存储数据。我能够成功地读取、更新、删除和插入我的数据库。但是,当我尝试添加另一个线程时,该线程也将使用相同的数据库并且相同的 table 抛出异常说
System.IO.IOException: 'The process cannot access the file 'C:\Users\Soyuz\TestApp\bin\Debug\Soyuz.db' because it is being used by another process.'.
这就是我与数据库建立连接的方式:
using (var db = new LiteDatabase(@"Soyuz.db")) { }
这里的文档说,LiteDB 提供了两种类型的连接。我想我必须使用共享的,因为我将不得不从不同的线程访问同一个数据库。
https://www.litedb.org/docs/connection-string/
但是当我尝试这段代码时;
using (var db = new LiteDatabase(@"Soyuz.db; Connection=shared")) { }
或
using (var db = new LiteDatabase(@"Soyuz.db; Mode=Shared")) { }
这一次,它抛出另一个异常说
System.ArgumentException: 'EngineSettings must have Filename or DataStream as data source'
有 LiteDB 经验的人可以帮我解决这个问题吗?
您错过了 Filename
,将此用于 v5:
using (var db = new LiteDatabase(@"Filename=Soyuz.db; Connection=shared")) { }
或 v4 的这个
using (var db = new LiteDatabase(@"Filename=Soyuz.db; Mode=Shared")) { }
我正在开发一个多线程的小应用程序。我决定使用 LiteDB 来存储数据。我能够成功地读取、更新、删除和插入我的数据库。但是,当我尝试添加另一个线程时,该线程也将使用相同的数据库并且相同的 table 抛出异常说
System.IO.IOException: 'The process cannot access the file 'C:\Users\Soyuz\TestApp\bin\Debug\Soyuz.db' because it is being used by another process.'.
这就是我与数据库建立连接的方式:
using (var db = new LiteDatabase(@"Soyuz.db")) { }
这里的文档说,LiteDB 提供了两种类型的连接。我想我必须使用共享的,因为我将不得不从不同的线程访问同一个数据库。
https://www.litedb.org/docs/connection-string/
但是当我尝试这段代码时;
using (var db = new LiteDatabase(@"Soyuz.db; Connection=shared")) { }
或
using (var db = new LiteDatabase(@"Soyuz.db; Mode=Shared")) { }
这一次,它抛出另一个异常说
System.ArgumentException: 'EngineSettings must have Filename or DataStream as data source'
有 LiteDB 经验的人可以帮我解决这个问题吗?
您错过了 Filename
,将此用于 v5:
using (var db = new LiteDatabase(@"Filename=Soyuz.db; Connection=shared")) { }
或 v4 的这个
using (var db = new LiteDatabase(@"Filename=Soyuz.db; Mode=Shared")) { }