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