Botschaftsverarbeitung



  • Hallo,

    ich hätte ne Frage bezüglich der Botschaftsverarbeitung im C++Builder. Wie kann ich aus dem Programm heraus andere Ereignisse behandeln, also die Steuerung kurzzeitig dem BS überlassen? Wenn bsp. eine rechenaufwendige Funktion über eine Schleife läuft, wie kann ich garantieren, dass der Nutzer zwischendurch die Möglichkeit hat, abzubrechen. Dazu müßte das Programm ja auf das Mausereignis reagieren können. In VB gibts da einfach ne Funktion DoEvents, die nachschaut, ob andere Ereignisse aufgetreten sind und diese behandelt. Muß ich im Builder wirklich jedes mal nen neuen Thread starten, um so was zu tun?

    mfg



  • Guck dir in der Hilfe mal

    Application->ProcessMessages()
    

    an. Das dürfte glaub ich das sein, was du suchst 🙂



  • Ich habe letztens bei einem selbstgebastelten Open/Save-Dialog auch ProcessMessages() verwendet. Dabei gab es bei mir einen ziemlich doofen Seiteneffekt, weil dann Botschaften abgearbeitet wurden, die chronologisch gesehen erst nach Ablauf der aktuellen Arbeiten hätten abgearbeitet werden dürfen.
    Man muß - insbesondere bei Verwendung der Ereignisse - immer aufpassen, was man damit bewirkt.

    Nur so als Warnung bzw. Hinweis.



  • Da man durch Aufruf dieser Funktion ein Pseudomultithreading erwirkt, ist es wichtig, dass man auch entsprechende "Multithreading"-Sicherungen einbaut (nur als Ergänzung)

    -junix


Anmelden zum Antworten