Progressbar, Threads und Variablen
-
servus
folgendes problem:
ich will nen filepacker machen. um den status anzeigen lassen zu können, hab ich 2 threads gemacht (um den GUI zu entlasten). im workerthread wird ne var hochgezählt (die gepackten bytes).
wie kann ich von der GUI auf die var im worker-thread zugreifen?und wie kann ich den GUI am optimalsten aktualisieren lassen?
-
wie kann ich von der GUI auf die var im worker-thread zugreifen?
Am besten gar nicht.
und wie kann ich den GUI am optimalsten aktualisieren lassen?Message-Sending verwenden.
Das könnte helfen:
http://www.codeguru.com/Cpp/controls/statusbar/article.php/c2985
-
aha.
und wie löse ich das problem mit der anzeige dann am geschicktesten?
-
Dein Worker Thread sendet mit PostMessage eine selbstdefinierte Message, wenn der Fortschritt forgeschritten ist.
z.B. : Du willst ein Bild mit 5000x5000 Pixeln invertieren.
Nach jeder durchgerechneten Bildzeile schickst Du mit PostMessage eine selbst definierte Message an den GUI Thread. Der GUI-Thread muss die Message verarbeiten und malt ein Stück mehr vom Fortschrittsbalken.Das ist die saubere Lösung, die jedoch schon etwas Arbeit bedeutet. Der GUI-Thread blockiert nicht, der Worker-Thread muss nicht warten, bis der GUI-Thread fertig ist mit malen. Beide Threads arbeiten auf ihren eigenen Datenstrukturen und kommunizieren über Message Passing.