Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/08/2013, 13:15
vistaero
 
Fecha de Ingreso: noviembre-2009
Mensajes: 67
Antigüedad: 15 años
Puntos: 2
Mostrar en tiempo real el contenido de un archivo de texto

Hola, tengo un archivo "server.log" que no es más que un archivo de texto plano en el que un servidor CraftBukkit va escribiendo continuamente el log del servidor.

La idea es mostrar en tiempo real el contenido de ese archivo en un textbox, y esta es mi primera prueba, usando un Timer a 100ms.

Código vb:
Ver original
  1. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
  2.         Dim logFileStream As New FileStream(Application.StartupPath & "\" & ServerNameValue & "\" & "server.log", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
  3.         Dim logFileReader As New StreamReader(logFileStream)
  4.  
  5.         While Not logFileReader.EndOfStream
  6.             Dim line As String = logFileReader.ReadLine()
  7.             For Each line2 In line
  8.                 If Not TextBox1.Text.Contains(line) Then
  9.                     TextBox1.Text = TextBox1.Text & line & vbNewLine
  10.                 End If
  11.             Next
  12.         End While
  13.  
  14.         ' Clean up
  15.        logFileReader.Close()
  16.         logFileStream.Close()
  17.  
  18.     End Sub

Funciona, pero el programa se ralentiza lo que no está escrito, hasta el punto de que sencillamente no me puedo permitir usar esto.

Desde luego la clave no es usar un timer que esté leyéndolo todo continuamente y escribiéndolo todo en el textbox una y otra vez.

¿Alguien sabe otra forma mejor de hacerlo?