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

标签 c# firebird filepath ioexception

我是 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 文件并提取数据。当代码第一次执行时,没有错误或问题,但是当我再次执行时,显示此错误:

The process cannot access the file 'C:\Users\ACC-0001.FDB' because it is being used by another process.

最佳答案

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

工具识别流程,例如:

C:>handle.exe c:\test.xlsx

Handle v3.46 Copyright (C) 1997-2011 Mark Russinovich Sysinternals - www.sysinternals.com

EXCEL.EXE pid: 3596 type: File 414: C:\test.xlsx

如发现here .

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

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

可以找到有关使用 using 的更多详细信息 here .

关于c# - 该进程无法访问文件 'filename',因为它正被另一个进程使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30255614/

相关文章:

c# - System.Threading.TimerCallback 仅在使用 Entity Framework 时触发一次

iPhone应用程序 : Where do I put a config file?

c# - Linq 分页 - 如何解决性能问题?

c# - 为什么异步 Web 服务调用没有响应?

sql - "Error op_response:0"准备好的语句

php firebird/interbase 外部数据库连接

sql - 如何在 Firebird 2.5 中删除列的空约束

node.js - Node 从 %appdata% 读取文件

android - 从Android应用的角度来看,根路径在哪里?

c# - .NET 自动生成的 Web 服务客户端 : How do I avoid requesting schemas from w3. 组织?