Hi!
Durch einen blöden Bug in einer
ActiveX-Komponente muss ich einen ListView umbauen.
Der ListView bildet die Bildvorschau des Windows Explorers nach.
Es gibt 2 Threads:
Nummer 1: bekommt den gerade gewählten Root sucht alle Bilder und rendert diese klein und
packt diese dann in den ListView. (über Synchronize selbstverständlich)
Nummer 2: beobachtet den gewählten Root auf Änderungen im Filesystem, so dass eventuelle
Änderungen im ListView aktualisiert werden.
Der ListView ist Owner der 2 Threads.
Es gibt ein paar Probleme:
- der DirWatcherThread muss eine höhere Prio als der RenderThread haben, damit er ihn unterbrechen kann
(über dieselbe ListView Methode die sonst auch den Thread beendet)
- wenn die RenderThread Prio auf tpLowest ist und ich diesen terminiere und mit WaitForSingleObject auf ihn warte, kommt es zu einem Lock, da er keine Rechenzeit mehr bekommt um sich zu beenden.
- wenn der RenderThread normale Prio hat bekommt er zwar Rechenzeit, aber ich bekomme Locks wenn er gerade Synchronize aufruft.
Ich verstehe nicht warum WaitForSingleObject Rechenzeit im MainThread beansprucht.
Habt ihr Ideen wie ich das ganz sauber aufbauen kann?
Grüße
Sebastian