Lendo um arquivo permitindo que outro processo ou programa o altere

Estava escrevendo um sistema no meu trabalho em C# (csharp) onde se conecta ao log de uma aplicação e escreve as linhas deste num panel (winform). A primeira dificuldade foi como poderia permanecer lendo o arquivo de forma continua. Resolvi com o trecho de codigo abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
....
try
{
      StreamReader reader = new StreamReader (File.OpenRead("<caminho completo do arquivo>"))
      while (true)
      {
           msg = reader.ReadLine();
           ...
     }
}
catch(Exception e)
{
     System.Console.WriteLine(e.Message);
}

Bem isso funcionou bem, a questão que ao fazer isso, por padrão o sistema trava o arquivo não permitindo que outro processo possa escrever no documento. Como queria apenas ler e permitir que a aplicação continuasse a escrever seu log, a solução foi, explicitar o a abertura do arquivo, pelo metodo Open, algumas diretivas. Fica mais ou menos assim:

1
2
StreamReader reader = new StreamReader(File.Open("path",FileMode.Open,FileAccess.Read, FileShare.ReadWrite));
...

Isso funcionou legal e me serviu bem pois agora tenho uma ferramenta simples para ficar vendo o log da minha aplicação.

Leave a Reply