我有一个使用sqlite的多线程应用程序。当两个线程尝试一次更新数据库时,出现异常
Additional information: The database file is locked
我认为它会在几毫秒后重试。我的查询不复杂。最复杂的(经常发生)是更新,选择,运行琐碎的代码更新/删除,提交。为什么会引发异常?在抛出异常之前,我如何使其重试几次?
最佳答案
SQLite对于访问不是线程安全的,这就是为什么您收到此错误消息的原因。
每当您要更新时,都应该同步对数据库的访问(创建一个对象,然后“锁定”它)。这将导致第二个线程阻塞并等待,直到第一个线程的更新自动完成。
关于c# - 如何停止数据库文件被锁定的异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1800174/