进程无法访问文件"..."因为它正被另一个进程使用

  • 本文关键字:进程 另一个 因为 访问 文件 c#
  • 更新时间 :
  • 英文 :


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

 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);

我猜是因为您没有关闭文件的句柄。您需要在处理完句柄后释放它,否则它将持久化。

将Writer对象包装在using块中,以便在完成处理此操作时将其释放。

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

如果你没有Process Monitor,这里有一个下载的链接。这是一个无价的工具,如果你不需要它……div。

如果你把代码改成这样,它就可以工作了:

string path = "e:\cc.accdb";
byte[] bb = { 54, 87, 98, 57, 65 };
BinaryWriter BW = new BinaryWriter(File.Open(path, FileMode.Create));
BW.Write(bb);

相关内容

最新更新