filesystemwatcher als Windows-Dienst?

8

Ich möchte eine App erstellen, die ein Verzeichnis für alle erstellten Dateien überwacht. ziemlich einfache Zeit, einen Dateisystemwächter zu verwenden. Meine Frage bezieht sich darauf, wie man es benutzt. Ist es üblich, einen Windows-Dienst zu verwenden, um sicherzustellen, dass die Anwendung immer ausgeführt wird?

Ich habe versucht, vom Erstellen von Windows-Diensten wegzukommen, wenn ich es nicht muss, aber ich sehe wirklich keine Alternative, dies in diesem Fall so zu machen. Normalerweise würde ich meinen Dienst in eine Konsolen-App umwandeln und mit dem Windows-Scheduler planen, aber das trifft in dieser Situation nicht wirklich zu.

kann jemand eine bessere Möglichkeit empfehlen, den Dateisystemwächter als einen Windows-Dienst zu implementieren?

danke für irgendwelche Gedanken.

BEARBEITEN Als Antwort auf die unten stehenden Kommentare muss ich lediglich ein Verzeichnis auf einem Server betrachten und wenn eine neue Datei erstellt wird, muss ich eine Kopie dieser Datei in ein anderes Verzeichnis auf demselben Server verschieben, vielleicht umbenennen in dem Prozess.

Die Häufigkeit und Anzahl der Dateien ist ziemlich klein. vielleicht höchstens 5-10 an einem Tag.

    
czuroski 20.10.2010, 18:23
quelle

4 Antworten

2

Sie sollten mehr darüber beschreiben, was Sie tun möchten. Wenn Sie jedoch etwas haben, das im Hintergrund ausgeführt werden muss und keine direkte Benutzerinteraktion erfordert, ist ein Service oft sinnvoll.

Sie können Remoting verwenden, um bei Bedarf ein Front-End mit Ihrem Dienst zu verbinden.

    
Brad 20.10.2010, 18:25
quelle
3

Ich bin mir noch nicht sicher, wie der Dateiwächter funktioniert, aber ich denke: Das Dateisystem löst Ereignisse aus; Ich meine, wie NTFS muss das tun. Ihr Dateibeobachter hängt sich in diese Ereignisse ein. Der Dateiwatcher unterbricht wahrscheinlich den Thread, in dem er ausgeführt wird, bis ein Ereignis eintritt und das Ereignis den Thread irgendwie aufweckt. Ein suspendierter Thread verwendet so gut wie nur sehr wenige CPU-Zyklen (eigentlich keine), während er ausgesetzt ist, so dass das Warten auf ein Dateiereignis nichts kostet. Ein polled Ansatz verschwendet also viel beaucoup (das ist Französisch, es bedeutet "eine Scheiße laden") von CPU-Zyklen, aber der Filewatcher nicht. Sie könnten wahrscheinlich auf PerfMon schauen, um zu sehen, ob dies wahrscheinlich wahr ist.

    
Jelly 13.05.2011 13:23
quelle
1

Ja, verwenden Sie einen Dienst für diese Art von Vorgang, aber nicht verwenden filesystem Beobachter . Wenn Sie nach Dateien in Ihrem Dienst suchen, verwenden Sie nicht die Timer-Klasse entweder.

Überprüfen Sie, ob die Datei vollständig geschrieben wurde und nicht mehr gesperrt ist, bevor Sie versuchen, sie zu verschieben.

Es ist trivial, nach Dateiänderungen zu suchen (die Syntax ist möglicherweise deaktiviert) und eliminiert viel von der zusätzlichen Programmierung, die mit Dateisystemwatcherereignissen verbunden ist.

%Vor%     
StingyJack 20.10.2010 18:32
quelle
0

Wenn Sie einen Windows-Dienst zum Umbruch von FileSystemWatcher verwenden, ist das völlig in Ordnung.

FSW ist das richtige Werkzeug für den Job (nativer Code für die Überwachung von Dateisystemen ist ein Muss, um richtig zu arbeiten), und ein Service ist der richtige Mechanismus, um ihn zu implementieren, vorausgesetzt, Sie müssen ständig aktiv sein.

Die Dienstanmeldeinformationen sind auch unabhängig vom angemeldeten Benutzer, was für Sie nützlich sein kann.

    
Steve Townsend 20.10.2010 18:35
quelle