C# 数据库锁Sqlite多线程

C# 数据库锁Sqlite多线程,c#,database,visual-studio,sqlite,C#,Database,Visual Studio,Sqlite,我正在用SQLite数据库编程一个C#应用程序,有时在我的输出日志中会收到消息:数据库锁定(5)。我不希望发生这种情况,我知道对数据库执行的多个操作会导致此异常 问题: 是否有办法查看SQLiteDatabase是否正在忙于处理其他查询?如果您正在创建多线程应用程序,拥有所需的知识不会解决任何问题。它们可能会减少它们出现的频率,但偶尔您会看到与以前相同的问题 为什么??因为从你问“你被锁定了吗?”的那一刻起,到你说“在那种情况下,让我锁定你做某事”的那一刻,另一个线程可能已经跳入并锁定了它 除非

我正在用SQLite数据库编程一个C#应用程序,有时在我的输出日志中会收到消息:
数据库锁定(5)
。我不希望发生这种情况,我知道对数据库执行的多个操作会导致此异常

问题:


是否有办法查看SQLiteDatabase是否正在忙于处理其他查询?

如果您正在创建多线程应用程序,拥有所需的知识不会解决任何问题。它们可能会减少它们出现的频率,但偶尔您会看到与以前相同的问题

为什么??因为从你问“你被锁定了吗?”的那一刻起,到你说“在那种情况下,让我锁定你做某事”的那一刻,另一个线程可能已经跳入并锁定了它

除非您得到一个超时,否则我将处理异常,并决定在每种情况下要做什么


<> P>另外,由于SQLite本质上是单个用户(而不是用户本身,而是使用“使用数据库”的数据库)中的用户,所以您可能会认为这并不是工作的错误工具。

谢谢您的回答,不,它是我的应用程序的几乎完美的数据库,我想我需要使用bool来检查某个东西是否只是在试图向数据库发送查询,目前,我可以使用该bool来防止其他线程向数据库发送查询,一个问题是,当bool再次设置为:busy=false时,它应该立即执行“任务”(查询到数据库)当它有时间的时候。使用while循环可以实现吗?您要寻找的是一个比较和交换。C#在联锁类中有一个,另一个可以使用的是互斥