c# - 如何停止 The database file is locked 异常?

标签 c# .net sqlite ado.net

我有一个使用 sqlite 的多线程应用程序。当两个线程尝试同时更新数据库时,出现异常

Additional information: The database file is locked

以为它会在几毫秒后重试。我的查询并不复杂。最复杂的(经常发生)是更新、选择、运行琐碎的代码更新/删除、提交。为什么会抛出异常?我怎样才能让它在抛出异常之前重试几次?

最佳答案

SQLite 的访问不是线程安全的,这就是您收到此错误消息的原因。

无论何时更新,您都应该同步对数据库的访问(创建一个对象,并“锁定”它)。这将导致第二个线程阻塞并等待第一个线程的更新自动完成。

关于c# - 如何停止 The database file is locked 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1800174/

相关文章:

c# - 如何在函数中分配out参数?

.net - 如何尽快将大量记录插入 MySql 数据库

SQLite数据库优化

c# 使用 linq 获取具有相同值的对象元素

c# - 当我们从 `using` block 中的方法返回时,内存是如何处理的?

c# - MVC 4 中的只读属性

c# - 如何使用 Linq to SQL 在数据库中添加记录?

c# - 如何使用仅替换 www 的第一次出现

c# - SQLite无法连接到另一台PC上的数据库

带有 SQLite LIKE 的 Android 自动完成部分工作