Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: OnMouseWheelUp/Down nur einmal

  Alt 19. Apr 2012, 09:44
Was ist etwas länger?
Was ist "Hier etwas tun was etwas länger dauert."? Und wird da irgendwie eine MessageBox oder Application.ProcessMessages aufgerufen?

An soein Ereignis sollte man nie etwas direkt dranhängen, was "länger" dauern könnte.
Stell dir mal vor alle Programme würden nach jeder Maus- oder Tastaturaktion ein paar Sekunden (oder gar länger) Pause machen.
Würde die Arbeit dann noch Spaß machen?

Das Event wird nur aufgerufen, wenn die ein Ereignis ansteht (Maus gescrollte) und die MessageQueue abgearbeitet wird.
oder wenn jemand die Ereignis-Methode direkt oder indirekt über SendMessage aufruft. (Letzteres geht nicht unbedingt über die MessageQueue)

PS: Wenn mehrere Ereignisse anstehn, wärend das Event abgearbeitet wird (wo du das Event abhängst) und dabei aber die MessagQueue nicht verarbeitet wird, dann bleibt das Event erhalten und wird erst ausgeführt, nachdem du die Events wieder angehängt hast.



Lager den Code aus (wenn möglich Thread) und sorge im Mausereignis nur dafür, daß die Verarbeitung gestartet wird, falls sie noch nicht läuft.


PPS: Du hast einen Debugger, da hattest/könntest du dir ansehn, wann und wie der zweite aufruf ausgelöst wird. (alternativ ein Logging einbauen)
$2B or not $2B

Geändert von himitsu (19. Apr 2012 um 09:47 Uhr)
  Mit Zitat antworten Zitat