gpt4 book ai didi

c# - 尝试删除数据库文件时出现 "file in use by another process"错误

转载 作者:太空狗 更新时间:2023-10-29 23:47:53 25 4
gpt4 key购买 nike

我有一个使用的 PC.sdf 文件。我关闭了连接,我需要删除它。

我这样打开连接:

bool OpenConn()
{
try
{
Conn = new SqlCeConnection(String.Format(@"Data Source={0}\{1}", PathI, "PC.SDF"));
Conn.Open();
return true;
}
catch
{
//MessageBox.Show(err.Message, "Connetion error");
return false;
}
}

我这样关闭它:

Conn.Close();
Conn.Dispose();

我尝试这样删除它:

if (File.Exists(@"\myPath\PC.sdf"))
File.Delete(@"\myPath\PC.sdf");

但我收到此错误:另一个进程正在使用文件。此错误可能是什么原因造成的,我该如何解决?

最佳答案

你可以尝试通过运行来强制垃圾回收

GC.Collect();

在关闭并处置数据库对象后执行此操作。

这当然只有在它是对该数据库文件的唯一引用时才有效。

编辑:回答关于您不应该使用 GC.Collect 来“修复”其他问题的评论。

我不认为这是因为另一个问题。垃圾收集器在运行时选择的不确定时间运行。这意味着您不能指望在以下两行之间处理您的对象。

Conn.Dispose();
//Nothing says GC will run exactly now
File.Delete(@"C:\Some-file-used-by-Conn.db");

您的选择是强制垃圾收集或以某种方式延迟删除。

关于c# - 尝试删除数据库文件时出现 "file in use by another process"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7222882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com