FileStream bloqueando um arquivo para leitura e escrita

Eu tenho o seguinte bloco de código que está me dando dor de cabeça.

Logicamente, isso deve funcionar, pois estou usando o fluxo de arquivos fornecendo o bloqueio dentro da instrução using. Quando chega à linha que cria o StreamWriter, ele falha dizendo "o arquivo não é gravável".

Agora meu programa é um aplicativo multithread. Qualquer thread pode estar tentando gravar neste arquivo. Eu preciso do programa para bloquear o arquivo, ler o conteúdo, verificar o conteúdo e, em seguida, gravar as alterações. Durante esse processo, nenhum outro thread deve poder acessar esse arquivo.

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

questionAnswers(2)

yourAnswerToTheQuestion