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.


Anmelden zum Antworten