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)

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