Reputation: 20274
What I'm trying to do with FileStream
in C#/.NET is to open two streams: one appending to a file and the other reading those writes asynchronously (for unit testing some network connection handling code). I can't figure out how to get the writer stream to open the file in non-exlusive locking mode and thus the code always throws an exception:
The process cannot access the file 'C:\test.txt' because it is being used by another process.
Here's a smattering of code which demonstrates the issue:
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);
Upvotes: 4
Views: 16679
Reputation: 36679
I am not sure if it helps, but if you are only unit testing, wouldn't it be easier to use a memory stream instead of files?
Upvotes: 0
Reputation: 47472
See this question: C# file read/write fileshare doesn’t appear to work
In short, your freader has to specify FileShare.Write to allow for the fact that there is already a writer on the file.
Upvotes: 5