Ordnerüberwachung (Watched Folder, Hot Folder)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Ich möchte einen Ordner auf Änderungen im Dateisystem überwachen (Windows only) und benutze dafür wie hier beschrieben `ReadDirectoryChangesW`.

Klappt soweit, hier mein Code (alternativ auf pastebin.com).

Wie Tim Golden beschreibt, handelt es sich dabei um einen "blocking-call":
Tim Golden hat geschrieben:Because it's a blocking call, it's difficult to get out of the loop if no change is made to the directory.
Er hat recht, obwohl ich das Programm stoppe, hängt immer noch ein ReadDirectoryChangesW-Aufruf und wartet auf ein Event... sobald ich überwachten Ordner etwas ändere, wird der Aufruf ausgeführt und mein Code beendet.

Frage: ich möchte meinen Code beenden, auch wenn noch eine Event-Abfrage hängt. Wie kann ich das realisieren?
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Idee: kann ich einen laufenden Thread mittendrin irgendwie beenden?

Ich habe einige ergooglete Tricks probiert (z.B. von hier), aber keine der getesteten Varianten hat funktioniert (der Thread blieb auch nach dem Stoppen geblockt bis eine weitere Änderung im überwachten Ordner stattfindet). Andere Meinungen sagen, man sollte einen Thread nicht einfach beenden...

^^ in meinem Fall würde ich das als zulässig betrachten, den Thread zu killen, da ich lediglich auf ein Windows-Event warte, das blockiert.

Danke für weitere Ideen und Tipps!
Antworten