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.