如何在没有独占锁的情况下使用FileStream附加到文件?

时间:2008-10-09 21:14:06

标签: c# .net file stream filestream

我想在C#/ .NET中使用FileStream尝试打开两个流:一个附加到文件,另一个异步读取这些写入(用于单元测试一些网络连接处理代码)。我无法弄清楚如何让 writer 流以非exlusive锁定模式打开文件,因此代码总是抛出异常:

  

该进程无法访问该文件   'C:\ test.txt'因为正在使用它   通过另一个过程。

这里有一些代码可以证明这个问题:

FileStream fwriter = new FileStream("C:\\test.txt", FileMode.Append,
    FileAccess.Write, FileShare.Read);
FileStream freader = new FileStream("C:\\test.txt", FileMode.Open,
    FileAccess.Read, FileShare.Read);

2 个答案:

答案 0 :(得分:5)

请参阅此问题:C# file read/write fileshare doesn’t appear to work

简而言之,你的freader必须指定FileShare.Write以允许文件中已有一个writer。

答案 1 :(得分:0)

我不确定它是否有帮助,但如果你只是单元测试,那么使用内存流而不是文件会不会更容易?