Programm reagiert nicht!
-
Hi,
mein programm(Dialog based) reagiert nicht bis er seine aufgabe macht(ich kann nicht das programm fenster verschieben).Bitte um hilfe.
-
Wenn eine "Aufgabe" sehr lange Zeit dauert, dann kann sich die Oberfläche halt nicht mehr zeichnen...
Verwende einen Thread um Deine "Aufgabe" zu erledigen... (CWinThread/AfxBeginThread)
-
aber ich habe (CWinThread/AfxBeginThread) in das programm benutzt!
-
wie viele threads das programm benutzt, ist abhängig von die datei grosse
z.B(1048576 Byte ---> 256 threads nach einander).
-
Greifst du in deinem Thread evtl. auf GUI-Komponenten zu? Wenn ja, dann könnte der Grund sein. Änderungen der GUI aus einem Thread heraus immer mit PostMessage realisieren.
-
Peter_Lustig schrieb:
Greifst du in deinem Thread evtl. auf GUI-Komponenten zu? Wenn ja, dann könnte der Grund sein. Änderungen der GUI aus einem Thread heraus immer mit PostMessage realisieren.
Ja, genau (Progress bar), aber was meinst du mit: Änderungen der GUI aus einem Thread heraus immer mit PostMessage realisieren.
-
Das ist ein bisl komplexer. Bitte mal Googlen.
Ist sicher auch bei www.codeproject.com beschrieben. Es darf nur der Main-Thread auf die GUI zugreifen (oder spezielle GUI-Threads). Will man einen anderen Thread dazu veranlssen, etwas zu tun (GUI-Controls zu verändern), dann sollte man diesem eine Message schicken. Diese wird in die Mesage Queue des Threads gepumpt und wenn dieser die CPU vom Scheduler erhält, wird die Message bearbeitet.Guck bitte mal bei www.codeproject.com unter ProgressBar oder ProgressControl.
MFG
Peter