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();
}

Ответы на вопрос(2)

Ваш ответ на вопрос