Ist ein Timer ein Thread?
-
Hallo , kann imir mal jemand erklären wie der MFC Timer funktioienrt?
Ich gehen mal davon aus der wie ein Thread funktioniert, und dann in betimmten abstndend imm in die "OnTimer" funktion sptingt oder?
Wird während dem OnTimer funktions druchlauf der Haupttrhead angehalten??
-
Hallo,
Dazu kann ich Dir Kapitel 4 von "Visual C++ in 21 Tagen" empfehlen. Hier der Link zur Online-Version (Kapitel 4) des Buches:
http://download.pearsoned.de/leseecke/html/VCPLUS6_21Tg/data/kap04.htm
Dort werden Timer ausführlich erklärt und ein kleines Beispiel dazu erarbeitet.
Gruß, Sascha
-
hi,
so'n timer schiebt nur 'ne WM_TIMER message in die msg queue. dafür braucht's keinen extra thread. das 'multitasking' einer windoofs-anwendung macht die message loopwhile(GetMessage(&msg, NULL, 0, 0) > 0) { DispatchMessage(&Msg); // kooperatives multitasking }
-
net schrieb:
so'n timer schiebt nur 'ne WM_TIMER message in die msg queue. dafür braucht's keinen extra thread. das 'multitasking' einer windoofs-anwendung macht die message loop
while(GetMessage(&msg, NULL, 0, 0) > 0) { DispatchMessage(&Msg); // kooperatives multitasking }Das ist nicht korrekt. Selbst wenn keine Message Loop läuft nimmt Windows einer Appliaktion irgendwann die zugeteilte Zeitscheibe weg.
Das mit dem kooperativen Multitasking ist zum Glück mit Windows 3.1 zu gestorben.Die Messageloop sorgt nur dafür, dass Windows Nachrichten bearbeitet werden und diese sind nun einmal synchronisiert und ohne die läuft keine UI und auch keine WM_TIMER Nachricht!
-
Martin Richter schrieb:
Das ist nicht korrekt.
da haben wir uns missverstanden

das 'echte' multitasking des OS ist natürlich immer präsent und hat vorrang. jedoch macht so'ne fensterchen-anwendung ihr eigenes 'multitasking' durch diese ominöse message loop, die ja immer die WndProc anspringt und u.a. WM_TIMER messages mit leben erfüllt...