Frage

Hier ist das Szenario:

Ich schreibe eine App, die auf Änderungen in einem bestimmten Verzeichnis überwacht.Dieses Verzeichnis wird pro Minute mit Tausenden von Dateien überflutet, jede mit einer „fast“ eindeutigen GUID.Das Dateiformat ist dieses:

Goid.dat wobei Guid == xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (der interne Inhalt ist nicht relevant, aber nur Textdaten)

Meine App wird ein Formular mit einem einzigen Textfeld sein, in dem alle Dateien angezeigt werden, die in Echtzeit hinzugefügt und gelöscht werden.Jedes Mal, wenn eine neue Datei eingeht, muss ich das Textfeld mit dieser Datei aktualisieren, ABER ich muss zuerst sicherstellen, dass diese semi-eindeutige GUID wirklich eindeutig ist. Wenn ja, aktualisieren Sie das Textfeld mit dieser neuen Datei.

Wenn eine Datei aus diesem Verzeichnis entfernt wird, stellen Sie sicher, dass sie vorhanden ist, löschen Sie sie dann und aktualisieren Sie das Textfeld entsprechend.

Das Problem ist, dass ich den .NET-Filewatcher verwendet habe und es scheint, dass es einen internen Puffer gibt, der jedes Mal gesprengt wird, wenn die (Puffergröße + 1)-te Datei eingeht.Ich habe auch versucht, eine interne Liste in meiner App zu führen und einfach jede einzelne eingehende Datei hinzuzufügen, aber die Überprüfung der eindeutigen GUID später durchzuführen, aber keine Würfel.

War es hilfreich?

Lösung

Ein paar Dinge, die ich im Kopf habe:

  • Wenn die Anleitung ist nicht eindeutig ist, würde die Datei mit demselben Namen nicht überschrieben werden, oder basiert die Prüfung auf einer Suche, die eine externe Aktion ausführt (z. B.im Archiv nachschauen)?(d. h.Ist das ein YAGNI-Moment?)
  • Ich habe FileSystemWatcher bereits mit ziemlich gutem Erfolg verwendet. Können Sie uns dazu einige Ideen geben? Wie Machst du tatsächlich Dinge?
  • Was war das Problem, wenn Sie bei der Arbeit mit Ihrer benutzerdefinierten Liste „Keine Würfel“ sagen?Und wie haben Sie ohne FileSystemWatcher nach Dateisystemänderungen gesucht?!

Tut mir leid, noch keine Antwort, ich würde nur gerne mehr über das Problem erfahren :)

Andere Tipps

Ich schlage vor, dass Sie einen Blick darauf werfen SHChangeNotify API-Aufruf, der Sie über alle Arten von Shell-Ereignissen benachrichtigen kann.Um die Aktivität beim Erstellen und Löschen von Dateien zu überwachen, sollten Sie den Argumenten SHCNE_CREATE und SHCNE_DELETE besondere Aufmerksamkeit schenken.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top