Was ist in C # die beste Möglichkeit, um Ausnahmen beim Sperren von Prozessen zu vermeiden, wenn zwei Prozesse dieselbe Datei lesen und in dieselbe Datei schreiben?

Mit dem folgenden Code zum Lesen von Dateien:

using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None))
{
    using (TextReader tr = new StreamReader(fileStream))
    {
        string fileContents = tr.ReadToEnd();
    }
}

Und der folgende Datei-Schreibcode:

using (TextWriter tw = new StreamWriter(fileName))
{
    tw.Write(fileContents);
    tw.Close();
}

Die folgenden Ausnahmedetails werden angezeigt:

Der Prozess kann nicht auf die Datei 'c: \ temp \ myfile.txt' zugreifen, da sie von einem anderen Prozess verwendet wird.

Was ist der beste Weg, um dies zu vermeiden? Muss der Leser es nach Erhalt der Ausnahme erneut versuchen oder gibt es einen besseren Weg?

Beachten Sie, dass der Leseprozess a verwendetFileSystemWatcher um zu wissen, wann sich die Datei geändert hat.

Beachten Sie auch, dass ich in diesem Fall binnicht Suche nach Alternativen zum Teilen von Zeichenfolgen zwischen den beiden Prozessen.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage