Это все, что связано с семантикой блокировки и совместного использования, которую вы запрашиваете при открытии файла.
Вместо использования быстрого доступа File.ReadAllText()
, попробуйте использовать System.IO.FileStream
и System.IO.StreamReader
/ System.IO.StreamWriter
.
Чтобы открыть файл:
using (var fileStream = new FileStream(@"c:\myFile", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var streamReader = new StreamReader(fileStream))
{
var someText = streamReader.ReadToEnd();
}
Обратите внимание на FileShare.ReadWrite
- это указание потоку разрешить передачу другим читателям или другим авторам.
Для письма попробуйте что-то вроде
using (var fileStream = new FileStream(@"c:\myFile", FileMode.Create, FileAccess.Write, FileShare.Read))
using (var streamWriter = new StreamWriter(fileStream))
{
streamWriter.WriteLine("some text");
}
Обратите внимание на FileShare.Read
- это говорит потоку разрешить доступ только для читателей.
Прочитайте информацию о System.IO.FileStream
и его перегрузках конструктора, и вы сможете точно настроить его поведение в соответствии с вашими целями.