Wie zu überwachen Textdatei und kontinuierlich ausgegeben Inhalt in eine textbox

Mache ich ein Programm, dass die Kontrollen einen game-server. Eine der Funktionen, die ich mache, ist eine live-server-logfile monitor.

Gibt es ein logfile (eine einfache Textdatei), der bekommt vom server aktualisiert, wie es läuft.

Wie kann ich ständig prüfen, ob die Protokolldatei und geben Sie den Inhalt in eine RichTextBox?

Habe ich diese einfache Funktion einfach versuchen, die Inhalte des Protokolls.
Es wird natürlich nur der text Zeile für Zeile und Ausgabe, die es zu meiner textbox.
Es wird auch sperren Sie das Programm so lange wie die Schleife läuft, so dass ich weiß, es ist nutzlos.

public void ReadLog()
{
  using (StreamReader reader = new StreamReader("server.log"))
  {
    String line;

    //Read and display lines from the file until the end of the file is reached.
    while ((line = reader.ReadLine()) != null)
    {
      monitorTextBox.AppendText(line + "\n");
      CursorDown();
    }
  }
}

Aber wie würden Sie gehen über die Lösung der live-überwachung so einfach wie möglich?

* EDIT *

Ich bin mit Prescots Lösung. tolle Sachen.

Im moment bin ich mit einem sstreamreader der text aus der Datei in mein Textfeld. Ich lief in das problem ist, dass, wenn ich versuchte, den Zugriff auf die gui-Bedienelemente in meinem event-handler das Programm einfach beendet ohne Fehler oder Warnungen.

Fand ich heraus, dass es hat zu tun mit dem Durchzug. Ich löste das Problem so:

private void OnChanged(object source, FileSystemEventArgs e)
{
    if (monitorTextField.InvokeRequired)
    {
        monitorTextField.Invoke((MethodInvoker)delegate { OnChanged(source, e); });
    }
    else
    {
      StreamReader reader = new StreamReader("file.txt");

      monitorTextField.Text = "";
      monitorTextField.Text = reader.ReadToEnd();
      reader.Close();
      CursorDown();
    }
}

Nun, mein problem ist nur, dass die file.txt die vom server verwendet werden, so kann ich nicht darauf zugreifen, da es "Wesen von einem anderen Prozess verwendet". Ich kann nicht kontrollieren, dass dabei.. also vielleicht bin ich kein Glück.

Aber die Datei kann im Editor geöffnet werden, während der serevr läuft, also irgendwie muss es möglich sein. Vielleicht kann ich eine temp-Kopie der Datei, wenn es updates und Lesen Sie die Kopie. Weiß nich...

verwenden Sie timer... und überprüfen Sie Sie alle 10 Sek oder 5 Sek...

InformationsquelleAutor Christoffer | 2012-03-18

Schreibe einen Kommentar