当前位置: 首页 > 知识库问答 >
问题:

进程无法访问文件'filename',因为它正被另一个进程使用

景岳
2023-03-14

我是C#新手,连接Firebird数据库时遇到问题。我想让我的程序访问Firebird数据库[FDB格式文件]。我有问题,请参见下面的代码:

File.Copy(pathway, new_pathway, true);

FbConnection addDetailsConnection = new FbConnection("User=sysdba;Password=masterkey;Dialect=3;Database= " + new_pathway +
    ";DataSource=localhost;" );
string SQLCOMMAND = " SELECT UOM FROM ST_ITEM_UOM WHERE CODE = 'ANT'";

addDetailsConnection.Open();
FbCommand readCommand = new FbCommand(SQLCOMMAND, addDetailsConnection);

FbDataReader myreader = readCommand.ExecuteReader();
while (myreader.Read())
{
    MessageBox.Show(myreader[0].ToString());
}
myreader.Close();
readCommand.Dispose();
addDetailsConnection.Close();
addDetailsConnection.Dispose();

这段代码允许我读取FDB文件并提取数据。当代码第一次执行时,没有错误或问题,但是当我再次执行时,这个错误会显示出来:

进程无法访问文件“C:\Users\ACC-0001”。FDB’因为它正被另一个进程使用。

共有2个答案

蓝飞
2023-03-14

您可能遇到了这个Firebird问题:FB服务器报告说,另一个应用程序通过符号链接在二次附件尝试中使用了DB文件

它只发生在Windows上,并且只有当两个非嵌入式连接使用不同的路径名称时,其中一个或两个路径中都有符号链接,因此它们有效地指向相同的位置。

handle.exeProcessExplorer只会显示fbserver.exe实际打开的规范(最终)文件名。

找出答案的唯一方法是:

  1. 比较连接字符串
  2. 手柄进行验证。exeProcess Explorer文件确实由fbserver打开。exe(而不是通过使用嵌入式连接的进程本身)
吕飞翼
2023-03-14

可以使用Handle检查哪个程序正在锁定文件。这可能是由您的代码或计算机上运行的另一个进程引起的。

该工具识别流程,例如:

C:

处理v3。46版权所有(C)1997-2011 Mark Russinovich Sysinternals-www.Sysinternals。通用域名格式

擅长EXE pid:3596类型:文件414:C:\test。xlsx

在这里找到的。

如果问题出在您的代码中,请确保您处理并关闭所有连接,最好在中使用部分:

using (FbConnection addDetailsConnection = new FbConnection("...")) 
{
    // do work
}

更多关于使用的详细信息可以在这里找到。

 类似资料:
  • 我的脚本搜索特定目录中的所有pdf文件,然后从pdf中提取一个id,并在文件中组织pdf。例如我有: 我想这样组织它们: 下面的脚本做的工作,但我认为只有最后一个文件输出以下错误: 回溯(最近一次调用):文件“C:\Users\user\Downloads\aa\project.py”,第74行,在操作系统中。rename(source,dest)PermissionError:[WinError

  • 下面是使用Ucanaccess Jdbc驱动程序从Microsoft Access文件filename.accdb获取连接的代码。但在运行此代码时,它会抛出异常,就像已经使用的文件一样。 但是我想在其他应用程序使用MSAccess数据库文件时并发地使用它。 当我运行上面的代码时,出现了如下异常: net.ucanaccess.jdbc.ucanaccesssqlexception:UCAEXC::

  • 我正在尝试查找文件的大小,并将该大小存储在中。为此,我保存文件的唯一名称,然后读取,最后删除文件。 我有时会在读取或删除文件时出错。 在阅读时,我得到了这个错误 拒绝访问路径'filename'。在System.io.__error.WinioError(Int32 errorCode,String maybeFullPath)在System.io.File.InternalDelete(Stri

  • 问题内容: 我的代码用于一个脚本,该脚本查看一个文件夹并删除分辨率为1920x1080的图像。我的问题是我的代码运行时; 我收到此错误消息: 只需确认一下,Python是我计算机上运行的唯一程序。是什么导致此问题,我该如何解决? 问题答案: 您的过程就是打开文件的过程(仍然存在)。您需要先关闭它,然后再删除它。 我不知道PIL是否支持上下文,但是是否支持: 进入之前,请确保删除(并关闭文件)。 如

  • 我是编程新手,我有一个问题。如果我有两个函数,一个创建一个文本文件并写入其中,而另一个打开同一个文本文件并从中读取。 我得到的错误是: 系统伊奥。IOException:'进程无法访问文件'@。txt“因为它正被另一个进程使用。” 我曾尝试为每个功能设置单独的计时器,但仍然不起作用。我认为最好的办法是函数二直到函数一结束才开始。 你能帮我实现这个吗?非常感谢!迈克 源代码:

  • 当我试图删除一个文件时,它说我的服务器正在使用它,所以我尝试使用(Image img=Image.FromFile(imgFilePath))实现一个,但随后我得到了