Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQLite错误(10):锁定/共享冲突延迟25毫秒_C#_Sqlite_Locking_Conflict - Fatal编程技术网

C# SQLite错误(10):锁定/共享冲突延迟25毫秒

C# SQLite错误(10):锁定/共享冲突延迟25毫秒,c#,sqlite,locking,conflict,C#,Sqlite,Locking,Conflict,My工作正常,但偶尔会输出此错误: SQLite error (10): delayed 25ms for lock/sharing conflict 正如上所建议的,我更新到了最新的SQLite,但它仍然存在。 如何解决这个问题 SQLite版本:SQLite-netFx40-static-binary-Win32-2010-1.0.84.0.zip32位Windows(.NET Framework 4.0)的预编译静态链接二进制文件 Visual C#2010 Express查看您评论中

My工作正常,但偶尔会输出此错误:

SQLite error (10): delayed 25ms for lock/sharing conflict
正如上所建议的,我更新到了最新的SQLite,但它仍然存在。
如何解决这个问题


SQLite版本:
SQLite-netFx40-static-binary-Win32-2010-1.0.84.0.zip
32位Windows(.NET Framework 4.0)的预编译静态链接二进制文件


Visual C#2010 Express查看您评论中的源代码:

        using (var command = new SQLiteCommand(GetSQLiteConnection()))
        {
            try
            {
                command.CommandText =
                    "DELETE FROM folders WHERE path='" + path + "'";
                command.ExecuteNonQuery();
            }
            catch (SQLiteException e)
            {
                SparkleLogger.LogInfo("CmisDatabase", e.Message);
            }
        }
using语句正在处理命令,而不是连接。尝试为每个命令使用两个嵌套的using语句

   using (var connection= GetSQLiteConnection())
   {
      using (var command = new SQLiteCommand(connection))
      {
        try
        {
            command.CommandText =
                "DELETE FROM folders WHERE path='" + path + "'";
            command.ExecuteNonQuery();
        }
        catch (SQLiteException e)
        {
            SparkleLogger.LogInfo("CmisDatabase", e.Message);
        }
     }
  }

这可能会缓解问题,但是其他因素可能会导致此错误出现。

根据此原始代码:

    using (var command = new SQLiteCommand(GetSQLiteConnection()))
    {
        try
        {
            command.CommandText =
                "DELETE FROM folders WHERE path='" + path + "'";
            command.ExecuteNonQuery();
        }
        catch (SQLiteException e)
        {
            SparkleLogger.LogInfo("CmisDatabase", e.Message);
        }
    }
更改为此解决了问题(只有前两行不同):


值得检查的是,您是否将SQLite连接封装在using语句中,以确保它们已被释放。@GavinSinai:我无法确定它发生在何处(因为它似乎是随机发生的),但我只在此类中使用SQLite:更改为该类后,它会说
无法访问已释放的对象。对象名称:SQLiteConnection
我不想每次都重新创建SQLiteConnection连接,因此很遗憾,我不能使用这种想法。我发现,通过确保所有连接、命令和读取器都包含在using语句中,我可以完全消除system.data.sqlite代码中的此类错误。
    var connection = GetSQLiteConnection();
    using (var command = new SQLiteCommand(connection))
    {
    try
        {
            command.CommandText =
                "DELETE FROM folders WHERE path='" + path + "'";
            command.ExecuteNonQuery();
        }
        catch (SQLiteException e)
        {
            SparkleLogger.LogInfo("CmisDatabase", e.Message);
        }
    }