该进程无法访问文件“...”,因为它正由另一个进程使用

时间:2011-10-20 20:19:18

标签: c#

我搜索了很多关于这个Exception的解决方案,但还没有任何结果。 这是我的代码, 正在抛出异常:

 BinaryWriter BW = new BinaryWriter(FI.Open(FileMode.Open));

请注意,每次都不会引发异常..我知道这很奇怪。 有谁有想法?

    FileInfo FI = new FileInfo("e:\\cc.accdb");
    if (FI.Exists)
        FI.Delete();

    GC.Collect();

    FI.Create();

    byte[] bb = { 54, 87, 98, 57, 65 };
    BinaryWriter BW = new BinaryWriter(FI.Open(FileMode.Open));
    BW.Write(bb);

2 个答案:

答案 0 :(得分:4)

我的猜测是因为你没有关闭文件的句柄。完成后需要释放句柄,否则它会持续存在。将Writer对象包装在using块中,以便在完成时处理它。

如果不是你的应用程序带有文件句柄,请运行procmon以查看哪个进程锁定了该特定文件。

Here是一个下载Process Monitor的链接,以防您没有它。这是一个非常宝贵的工具,如果你不需要它......你会的。

答案 1 :(得分:3)

如果您将代码更改为类似的内容,它将起作用:

string path = "e:\\cc.accdb";

byte[] bb = { 54, 87, 98, 57, 65 };
BinaryWriter BW = new BinaryWriter(File.Open(path, FileMode.Create));
BW.Write(bb);