Ich versuche, eine Protokolldatei auf Änderungen zu überwachen. Mein Code funktioniert und tut alles, was er sollte. Da ich möchte, dass dies als Windows-Dienst läuft und ständig überwacht wird, bin ich mir nicht sicher, wie ich es in einen Wartezustand versetzen könnte. Hier ist, was es gerade macht.Wartet, während FileSystemWatcher das Verzeichnis überwacht
public static void Main()
{
log_watcher = new FileSystemWatcher();
log_watcher.Path = Path.GetDirectoryName(pathToFile);
log_watcher.Filter = recent_file.Name;
log_watcher.NotifyFilter = NotifyFilters.LastWrite;
log_watcher.Changed += new FileSystemEventHandler(OnChanged);
log_watcher.EnableRaisingEvents = true;
//do rest of stuff OnChanged
while (true)
{
}
}
Und dann nur eine einfache:
public static void OnChanged(object sender, FileSystemEventArgs e)
{
Console.WriteLine("File has changed");
}
Was wäre eine bessere Art und Weise in einem Windows-Dienst sein, dies zu tun?
Das ist kein Windows-Service-Code, nur eine Konsolen-App. Erstellen Sie zuerst das richtige Beispiel, wo Sie eine Nachrichtenpumpe haben (wie einen Winforms-Code), die auf "Start", "Stopp" usw. reagiert. –
@LB versucht, sicherzustellen, dass mein Code funktioniert, bevor ich ihn in einen Dienst lege, weil es einfacher ist debug imo – Tom
Aber eine Konsole App ist nicht der richtige Weg, um zu testen. Verwenden Sie mindestens eine Winforms App –