FileStream блокирует файл для чтения и записи
У меня есть следующий блок кода, который вызывает у меня головную боль.
Логически это должно работать, поскольку я использую файловый поток, обеспечивающий блокировку в операторе using. Когда он попадает на строку, которая создает StreamWriter, он не может сказать «файл недоступен для записи».
Теперь моя программа является многопоточным приложением. Любой поток может пытаться записать в этот файл. Мне нужна программа, чтобы заблокировать файл, прочитать содержимое, проверить содержимое, а затем записать любые изменения. Во время этого процесса ни один другой поток не сможет получить доступ к этому файлу.
using (var fs = File.Open(fileLoc, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
var sr = new StreamReader(fs);
var str = sr.ReadToEnd();
var strArray = str.Split(',');
if (strArray.Any(st => st == text))
{
return;
}
sr.Close();
var sw = new StreamWriter(fs);
sw.Write(str + text);
sw.Flush();
sw.Close();
}