Programm reagiert während der ausführung nicht!



  • Hallo,

    habe hier nen Programm geschrieben, welches Daten zum Server schickt um damit Terminals zu Emulieren, also nen Emulationsprogramm. Jedoch ist mein Problem, dass während er am Emulieren ist, kann ich nichtsmehr auf der Schaltfläche anklicken, z.b. kann ich den Ende Button erst wieder betätigen wenn das Emulieren fertig ist. Hat da wer nen Rat, wie ich da nen einfachen Befehl reinmachen kann, mit dem das geht, dass ich auch während des Emulieren auf die Schalfläche was drücken kann ?

    Danke

    MFG
    Muchi



  • Schau mal in die FAQ.

    Stichwörter sind: Thread, Messageloop

    Liegt daran weil Dein Programm eben nur den Code ausführen kann den du erstellt hast.
    Somit bekommt dein Programm auch nichts aus der Warteschlange der Nachrichten.
    Wenn man eine Button klickt dann wird von Windows eine Nachricht an dein Programm gesendet welche du aber nicht verarbeitest.
    Dein Programm macht das normalweise alleine wenn du nicht gerade deine Code ausführst ohne die Messageloop aufzurufen oder deinen Code in einem Thread packst.



  • Thread bietet sich da eh an, da dann did Hauptprogg Zeit hat, sich um anderes zu kümmern. Die Emulatoren laufen dann für sich in den Threads.



  • Hallo,
    Funktion Sleep versuche in deine Schleife. es muss nich viel µs sein etwa 5. Theoretisch muß es gehen.



  • Was hat Sleep damit zu tun! Die Ausführung dauert nur noch länger.
    µs (Mikrosekunden) gibt es sowieso nicht. Wenn dann ms (Millisekunden).



  • dankeeeschöön habe es mit Thread hinbekommen.



  • Sleep dazu da den Processor zu entlassten und damit das Programm auf die andere Messages reagieren kann (z.B WM_SHOW), die seiner Seit über das System kommen und nicht von dem gleichem Process gesendet werden, ausserdem ist in socket schon ein Thread drin.



  • Das ist blödsinn.
    Nun wenn er einen 2ten Thread hat bring Sleep(0) etwas.
    Ein Sleep im GUITHREAD blockiert auch diesen.
    Sockets können zwar Async ausgeführt werden aber dies ist nicht zwingend. BlockingSockets blockieren auch den GUITHREAD wenn sie dort ausgeführt werden.
    Also nochmals. Alles war im GUITHREAD ausgeführt wird blockiert die GUI wenn man nicht die Messageloop selbt ausließt.



  • Hi, wo haßt Du MfC mit GUIThread gesehen? Es ist in java übrich. In Mfc geht Drawing über CRITICAL_SECTION.


  • Mod

    Sigie schrieb:

    Hi, wo haßt Du MfC mit GUIThread gesehen? Es ist in java übrich. In Mfc geht Drawing über CRITICAL_SECTION.

    MFC Drawing geht über CRITICAL_SECTION. ?!?!? 😕
    Quark!

    Unix-Tom hat recht!


Anmelden zum Antworten