Ich habe den folgenden Code-Block, der mir Kopfschmerzen bereitet.FileStream Sperren einer Datei zum Lesen und Schreiben C#
Logisch sollte es funktionieren, wie ich den Filestream benutze, der die Sperre in der using-Anweisung bereitstellt. Wenn es zu der Zeile kommt, die den StreamWriter erstellt, schlägt es fehl und sagt "die Datei ist nicht schreibbar".
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 dann 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();
}