2008-10-09 7 views
3

То, что я пытаюсь сделать с FileStream в C# /. NET, состоит в том, чтобы открыть два потока: одно добавление к файлу, а другое - чтение асинхронно (для модульного тестирования кода обработки сетевого соединения). Я не могу понять, как получить писателя потока, чтобы открыть файл в режиме без эксклюзивного стопорного и, таким образом, кода всегда выдает исключение:Как использовать FileStream для добавления в файл без эксклюзивной блокировки?

Процесс не может получить доступ к файлу «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); 

ответ

5

Посмотреть этот вопрос: C# file read/write fileshare doesn’t appear to work

Короче говоря, ваш freader должен указать FileShare.Write, чтобы учесть тот факт, что уже является автором в файле.

+0

Спасибо за быстрый ответ! – 2008-10-09 21:17:44

0

Я не уверен, что это помогает, но если вы всего лишь модульное тестирование, не будет ли проще использовать поток памяти вместо файлов?

+0

Да, если бы я мог только выяснить, как заставить MemoryStream действовать скорее как соединение. Конечно, у меня все еще столько проблем с FileStream, поэтому я могу задать другой вопрос. – 2008-10-09 21:32:20