FileStream bloquea un archivo para leer y escribir
Tengo el siguiente bloque de código que me está dando un dolor de cabeza.
Lógicamente, debería funcionar ya que estoy usando el flujo de archivos que proporciona el bloqueo dentro de la instrucción using. Cuando llega a la línea que crea el StreamWriter, falla diciendo que "el archivo no se puede escribir".
Ahora mi programa es una aplicación multiproceso. Cualquier hilo podría estar intentando escribir en este archivo. Necesito el programa para bloquear el archivo, leer el contenido, verificar el contenido y luego volver a escribir cualquier cambio. Durante ese proceso, ningún otro hilo debe poder acceder a ese archivo.
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();
}