Laden...

FileSystemWatcher oder besser nicht?

Erstellt von medi vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.247 Views
M
medi Themenstarter:in
126 Beiträge seit 2005
vor 7 Jahren
FileSystemWatcher oder besser nicht?

Hallo,

Ich habe folgendes Problem. Ich muss eine unbekannte Anzahl an Ordner überwachen (Das können durchaus 300 und mehr werden) und reagieren wenn dort eine Datei reingelegt wurde. Die Reaktion muss nicht sofort erfolgen. Das Ganze muss auch noch dynamisch sein. Sprich es gibt eine Liste aus der die Ordnerpfade während der Laufzeit des Programms ermittelt werden und die sich jederzeit ändern kann. Also können sich auch die zu überwachenden Ordner ändern.
Ich hatte das nun so umgesetzt, dass ich einfach mit nem Timer alle x Minuten die Ordner durchrenne und nach entsprechenden Dateien scanne.
Jetzt dachte ich mir, dass diese Vorgehensweise vllt. nicht gerade die Geschickteste ist und bin auf die FileSystemWatcher Klasse gestoßen.
Naiv wie ich bin wollte ich nun einfach für jeden Ordner ein FileSystemWatcher Objekt erzeugen und das in ein Dictionary packen. Sobald ein Ordner rausfliegt wird das Objekt wieder aus dem Dictionary entfernt und verworfen.

Soweit zur Theorie...

In der Praxis reagiert allerdings mein FileSystemWatcher nicht auf Veränderungen im Ordner. Kann das überhaupt funktionieren wie ich mir das denke?

Und dann was Generelles: Ich hab gelesen, dass der FileSystemWatcher wohl Probleme macht wenn eine größere Anzahl an Dateien in einen Ordner geschoben wird. Ist dem so? Weil in meinem Fall kann es durchaus sein, dass mal 100 oder mehr Dateien in einen Ordner kopiert werden.

Wäre es also besser nicht die FileSystemWatcher Funktionalität zu nutzen und wieder einfach nur zu scannen oder gibts noch eine andere Möglichkeit der Ordnerüberwachung?

T
2.223 Beiträge seit 2008
vor 7 Jahren

Aktuell bin ich nicht sicher was genau alles bei deinen Ordnern und Dateien passieren kann.

Wenn in die Ordner die Datei nur reinkopiert werden, kannst du das auch wie bisher in festen Intervallen machen.
Je nachdem wir der Ablauf sein kann, kannst du aber auch mit dem FileSystemWatcher arbeiten.
Hab ihn bisher nicht benutzt, da ich solch einen Fall nicht direkt habe.

Ich habe bei einem Projekt auch einen Import Ordner.
Dieser wird alle 5 Min. angefasst und dann alle Dateien darin verarbeitet und dann verschoben.
dann muss der Task nicht dauerhaft laufen und den Ordner überwachen.

Wenn die Anforderungen bei dir auch so locker sind, muss dein Task ggf. auch nicht üer FileSystemWatcher ein Auge darauf haben.
Falls er doch Dauerhaft läuft, solltest du dich in das Thema einarbeiten und prüfen ob der Watcher deinen Anforderungen entspricht.

Entsprechende Artikel und Topics gibt es auch hier im Forum, wo diverse Probleme schon angegangen wurden.
Ansonsten einfach die Doku dazu lesen und prüfen ob diese für deine Zwecke umsetzbar sind.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.