Callbackschleife überfordert?
-
hallo leute!
folgende situation: man hat mit einer dll einen globalen hook gesetzt
und lässt sich nun bei jedem gefragten ereignis eine Nachricht
WM_USER ans hauptprogramm schicken. dort werden beim eintreten
der nachricht einige funktionen aufgerufen:case WM_USER:
funktion a();
funktion b();
funktion c();
break;nur leider funktioniert das nicht bei jedem ereignis sondern
nur bei 5aus20, ich hab irgendwie das gefühl die schleife
hängt...wenn ich nur funktion a() benutze läuft alles zuverlässig?
die funktionen an sich und der kontakt mit der dll laufen problemlos...
vielleicht kennt ja jemand dieses performance-problem,
bin mal gespannt
-
Verwendest Du SendMessage oder PostMessage. SendMessage synchronisiert die Prozesse und das kann sicherlich auch zum bockieren des gehookten Threads führen.
Das allerdings nicht alle Nachrichten ankommen kann ich mir nicht vorstellen. Höchstens, dass Dein Hook das System extrem blockiert.
-
Hi
Denke dein Hook ist für die Katze !

lowbyte
-
hallo Martin,
benutze PostMessage.
hab das problem aber mittlerweile verstanden.@lowbyte_: der hook ist nicht das problem.
funktion c() hat eine do-while schleife die
eine weile braucht bis die bedingung eingetroffen
ist. währenddessen kommt aber wieder eine WM_USER nachricht...
meine neue frage wäre daher:
kann man überhaupt eine Schleife einbauen bei der callbackfunktion
wenn die abarbeitung eine weile dauert und neue ereignisse stattfinden?
-
blablablub schrieb:
funktion c() hat eine do-while schleife die
eine weile braucht bis die bedingung eingetroffen
ist. währenddessen kommt aber wieder eine WM_USER nachricht...
meine neue frage wäre daher:
kann man überhaupt eine Schleife einbauen bei der callbackfunktion
wenn die abarbeitung eine weile dauert und neue ereignisse stattfinden?Du hast doch nur einen Thread. Solange Deine Schleife läuft wird gar nichts angenommen. Du hast noch nicht verstanden wie Nachrichten wirken und empfangen werden. Eine neue Nachricht unterbricht gar nichts! Eine neue Nachricht wird nur dann gelesen, wenn sie durch GetMessage abgeholt wird. Deine Schleife blockiert das ganze.