Seite 1 von 1

Ordnerüberwachung (Watched Folder, Hot Folder)

Verfasst: Freitag 31. Mai 2013, 08:09
von droptix
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?

Re: Ordnerüberwachung (Watched Folder, Hot Folder)

Verfasst: Freitag 31. Mai 2013, 20:24
von droptix
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!