Как использовать FileStream для добавления в файл без исключительной блокировки? - PullRequest
3 голосов
/ 10 октября 2008

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

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

5 голосов
/ 10 октября 2008

См. Этот вопрос: Чтение / запись файла C # filehare не работает

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

0 голосов
/ 10 октября 2008

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

...