FileStream: используемый другой ошибкой процесса

У меня есть два различных модуля, которые должны получить доступ в единственный файл (У каждого будет Доступ ReadWrite - Другой единственный Read). Файл открыт с помощью следующего кода в одном из модулей:

FileStream fs1 = new FileStream(@"D:\post.xml", FileMode.Open, FileAccess.ReadWrite, FileShare.Read);

Проблема Th состоит в том, что второй модуль перестал работать при попытке открыть тот же файл с помощью следующего кода:

FileStream fs = new FileStream(@"D:\post.xml", FileMode.Open, FileAccess.Read);

Я должен установить некоторые дополнительные параметры безопасности здесь?

9
задан A9S6 5 March 2010 в 13:19
поделиться

3 ответа

Для FileStream, который только читает файл, вам нужно установить его как

FileShare.ReadWrite

FileStream fs = new FileStream(@"D:\post.xml", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

в противном случае оригинальный FileStream не сможет писать обратно на него... это просто обмен данными между двумя потоками, убедитесь, что вы передаете то, что нужно другому

27
ответ дан 4 December 2019 в 08:00
поделиться

вам нужно использовать команду filestreamname.Open(); и filestreamname.close(); при использовании двух потоков файлов, которые читают/пишут в один и тот же файл, потому что вы не можете читать и писать в файл асинхронно.

0
ответ дан 4 December 2019 в 08:00
поделиться

При открытии второго FileStream вам также необходимо указать FileShare.Read , иначе он попытается открыть его с монопольным доступом и потерпит неудачу, потому что файл уже открыт

0
ответ дан 4 December 2019 в 08:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: