![](/img/trans.png)
[英]System.IO.IOException: The process cannot access the file being used by System.IO.__Error.WinIOError
[英]Getting error System.IO.IOException: 'The process cannot access the file'
我正在开发一个带有多线程的小应用程序。 我决定使用 LiteDB 来存储数据。 我能够成功读取、更新、删除和插入我的数据库。 但是,当我尝试添加另一个线程时,该线程也将使用相同的数据库和相同的表抛出异常说
System.IO.IOException: '进程无法访问文件'C:\\Users\\Soyuz\\TestApp\\bin\\Debug\\Soyuz.db',因为它正被另一个进程使用。'。
这就是我与数据库建立连接的方式:
using (var db = new LiteDatabase(@"Soyuz.db")) { }
这里的文档说,LiteDB 提供 2 种类型的连接。 我想我必须使用共享的,因为我必须从不同的线程访问同一个数据库。
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 必须将 Filename 或 DataStream 作为数据源'
有 LiteDB 经验的人可以帮我解决这个问题吗?
您错过了Filename
,请将其用于 v5:
using (var db = new LiteDatabase(@"Filename=Soyuz.db; Connection=shared")) { }
或者这适用于 v4
using (var db = new LiteDatabase(@"Filename=Soyuz.db; Mode=Shared")) { }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.