FileStream sperrt eine Datei zum Lesen und Schreiben
Ich habe den folgenden Codeblock, der mir Kopfschmerzen bereitet.
Logischerweise sollte es funktionieren, da ich den Dateistream verwende, der die Sperre in der using-Anweisung bereitstellt. Wenn die Zeile erreicht wird, in der der StreamWriter erstellt wird, wird nicht die Meldung "Die Datei ist nicht beschreibbar" ausgegeben.
Jetzt ist mein Programm eine Multithread-Anwendung. Jeder Thread könnte versuchen, in diese Datei zu schreiben. Ich brauche das Programm, um die Datei zu sperren, den Inhalt zu lesen, den Inhalt zu überprüfen und alle Änderungen zurückzuschreiben. Während dieses Vorgangs sollte kein anderer Thread auf diese Datei zugreifen können.
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();
}