Em C #, se 2 processos estiverem lendo e gravando no mesmo arquivo, qual é a melhor maneira de evitar exceções de bloqueio de processo?

Com o seguinte arquivo de leitura de código:

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

E o seguinte arquivo escreve código:

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

Os seguintes detalhes da exceção são vistos:

O processo não pode acessar o arquivo 'c: \ temp \ myfile.txt' porque está sendo usado por outro processo.

Qual é a melhor maneira de evitar isso? O leitor precisa tentar novamente após o recebimento da exceção ou existe alguma maneira melhor?

Observe que o processo do leitor está usando umFileSystemWatcher para saber quando o arquivo foi alterado.

Observe também que, neste caso, eu sounão procurando maneiras alternativas de compartilhar strings entre os 2 processos.

questionAnswers(8)

yourAnswerToTheQuestion