System.Data.SQLite Close()不释放数据库文件

在尝试删除文件之前,我在关闭数据库时遇到问题。代码就是这样


 myconnection.Close();    

 File.Delete(filename);

并且Delete抛出了一个异常,即该文件仍在使用中。几分钟后我在调试器中重新尝试了Delete(),所以这不是时间问题。


我有事务代码,但在Close()调用之前它根本不运行。所以我很确定这不是一个开放的交易。打开和关闭之间的sql命令只是选择。


ProcMon显示我的程序和我的防病毒软件查看数据库文件。它没有显示我的程序在close()之后释放db文件。


Visual Studio 2010,C#,System.Data.SQLite版本1.0.77.0,Win7


我看到一个两岁的bug就像这样,但更新日志说它已修复。


还有什么我可以检查的吗?有没有办法获得任何打开的命令或事务的列表?


新的工作代码:


 db.Close();

 GC.Collect();   // yes, really release the db


 bool worked = false;

 int tries = 1;

 while ((tries < 4) && (!worked))

 {

    try

    {

       Thread.Sleep(tries * 100);

       File.Delete(filename);

       worked = true;

    }

    catch (IOException e)   // delete only throws this on locking

    {

       tries++;

    }

 }

 if (!worked)

    throw new IOException("Unable to close file" + filename);


牛魔王的故事
浏览 1241回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP