Hallo liebe Gemeinde,
ich überarbeite derzeit ein vb.net-Programm, welches eine Textdatei überwacht, die von einem anderen Steuerprogramm (einer Maschine) geschrieben wird. Der Ablauf ist wie folgt:
Bei jedem Neustart der Maschine wird die Datei ("Progress.txt") neu erstellt. Ein Kopfblock (ca. 15 Zeilen) enthält Angaben zu dem aktuellen Vorgang. Danach wird in unregelmäßigen Abständen eine Zeile hinzugefügt, um den Bearbeitungsstatus mitzuteilen.
Bisher habe ich es so gelöst:
- Beim ersten Einlesen: LastWriteTime der Progress.txt in Variable speichern und Kopfblock mit StreamReader auslesen, letzte gelesene Zeilennummer in Variable speichern.
- Ein Timer hat alle 2 Sekunden geprüft, ob die LastWriteTime der Datei sich geändert hat, wenn ja -> mit StreamReader bis zur gespeicherten Zeilennummer lesen und alle weiteren Zeilen bis EOF einlesen und verarbeiten, danach LastWriteTime und letzte Zeilennummer in den Variablen aktualisieren.
Die Lösung scheint mir jedoch ein wenig gebastelt. Habt ihr einen Gedankenanstoß wie ich das ohne Timer in einer Loop-Schleife lösen könnte? Am liebsten würde ich den StreamReader die ganze Zeit offen lassen. Aber wie bekommt der mit dass weitere Zeilen hinzu kommen?
Vielen Dank für eure Ideen und einen schönen Sonntag!
ich überarbeite derzeit ein vb.net-Programm, welches eine Textdatei überwacht, die von einem anderen Steuerprogramm (einer Maschine) geschrieben wird. Der Ablauf ist wie folgt:
Bei jedem Neustart der Maschine wird die Datei ("Progress.txt") neu erstellt. Ein Kopfblock (ca. 15 Zeilen) enthält Angaben zu dem aktuellen Vorgang. Danach wird in unregelmäßigen Abständen eine Zeile hinzugefügt, um den Bearbeitungsstatus mitzuteilen.
Bisher habe ich es so gelöst:
- Beim ersten Einlesen: LastWriteTime der Progress.txt in Variable speichern und Kopfblock mit StreamReader auslesen, letzte gelesene Zeilennummer in Variable speichern.
- Ein Timer hat alle 2 Sekunden geprüft, ob die LastWriteTime der Datei sich geändert hat, wenn ja -> mit StreamReader bis zur gespeicherten Zeilennummer lesen und alle weiteren Zeilen bis EOF einlesen und verarbeiten, danach LastWriteTime und letzte Zeilennummer in den Variablen aktualisieren.
Die Lösung scheint mir jedoch ein wenig gebastelt. Habt ihr einen Gedankenanstoß wie ich das ohne Timer in einer Loop-Schleife lösen könnte? Am liebsten würde ich den StreamReader die ganze Zeit offen lassen. Aber wie bekommt der mit dass weitere Zeilen hinzu kommen?
Vielen Dank für eure Ideen und einen schönen Sonntag!