У меня есть два различных модуля, которые должны получить доступ в единственный файл (У каждого будет Доступ 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);
Я должен установить некоторые дополнительные параметры безопасности здесь?
Для FileStream, который только читает файл, вам нужно установить его как
FileShare.ReadWrite
FileStream fs = new FileStream(@"D:\post.xml", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
в противном случае оригинальный FileStream не сможет писать обратно на него... это просто обмен данными между двумя потоками, убедитесь, что вы передаете то, что нужно другому
вам нужно использовать команду filestreamname.Open(); и filestreamname.close(); при использовании двух потоков файлов, которые читают/пишут в один и тот же файл, потому что вы не можете читать и писать в файл асинхронно.
При открытии второго FileStream
вам также необходимо указать FileShare.Read
, иначе он попытается открыть его с монопольным доступом и потерпит неудачу, потому что файл уже открыт