timeSetEvent Problem und Frage was EnterCriticalSection etc. genau macht
-
Hallo,
Habe heute mal den Multimedia Timer ausprobiert. Funktioniert auch soweit...Außer die Callback Funktion braucht zu lange.Dann nämlich hängt sich das Programm auf, kann aber noch beendet werden.
Hab dann in einem anderen Quellcode etwas von EnterCriticalSection etc. gelesen. Diese Funktionen habe ich auch eingebaut aber es funktioniert immer noch nicht.
Mal zum besseren Verständnis :update() { ::EnterCriticalSection(&criticalsection); rendercallback->Render(); //Zeichnet Rechtecke in eine Bitmap InvalidateRect(hWnd, NULL, 0); //Bringt die Bitmap auf den Bildschirm ::LeaveCriticalSection(&criticalsection); } TimeProc(BlaBla) { if (richtigertimer) update(); }Also ich nehme an, dass wenn die update Funktion länger dauert als das Timer delay, dann wird das Programm extrem langsam. Den Timer habe ich auf die maximale Frequenz gestellt und als delay 10 ms genommen. Das komische ist auch, sobald ich weniger als 7 ms oder so nehme, hängt sich das Programm auch auf.
Weiß irgendjemand was ich noch tun kann? Bzw. kann mir einer dieses CriticalSection genauer erklären?
Bzw. versteht überhaupt jemand was ich will?Finde es beim Durchlesen ziemlich verwirrend
!Danke
Verwirrt
-
Eine CriticalSection brauchst du eigentlich erst, wenn du mit verschiedenen Threads auf dieselben Daten zugreifen willst und dabei verhindern musst, dass sie sich gegenseitig ins Gehege kommen

Timer schrieb:
Also ich nehme an, dass wenn die update Funktion länger dauert als das Timer delay, dann wird das Programm extrem langsam.
Ist doch auch verständlich, denn wenn du z.B. alle 5 ms eine Funktion aufrufen willst, die aber zur Abarbeitung 10 ms braucht, dann bist du ja die ganze Zeit am Arbeiten (wobei dann afaik einfach Timer-Nachrichten irgendwann wegfallen)

-
Danke, die Erleuchtung
!Nicht mehr verwirrt