我正在C#/.NET中使用FileStream进行的操作是打开两个流:一个流附加到文件上,另一个流异步读取这些写操作(用于对某些网络连接处理代码进行单元测试).我无法弄清楚如何让编写器流以非排他性锁定模式打开文件,因此代码始终会引发异常:
The process cannot access the file
‘C:\test.txt’ because it is being used
by another process.
这是一小段代码,演示了该问题:
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);
解决方法:
看到这个问题:C# file read/write fileshare doesn’t appear to work
简而言之,您的freader必须指定FileShare.Write,以允许该文件上已经存在一个作者的事实.