Oh, vielen Dank!
Das zweite Video hatte ich also im Prinzip zuvor richtig verstanden und auch geschaut, was danach passiert. (dazu gleich mehr)
Das erste Video hat mir aber schon mal ein bisschen weitergeholfen.
Der Haupt-Thread (TID auch mit Process Explorer abgeglichen), der die Auslastung verursacht landet beim Anhalten immer hier:
Code:
win32u.NtUserWaitMessage:
762E10C0 B80C100100 mov eax,$0001100c
762E10C5 BA10632E76 mov edx,$762e6310
762E10CA FFD2 call edx
762E10CC C3 ret <------
762E10CD 8D4900 lea ecx,[ecx+$00]
Der zugehörige Stack Trace ist das hier:
Code:
:762e10cc win32u.NtUserWaitMessage + 0xc
:0070ec0b TApplication.Idle + $153
Vcl.Forms.TApplication.HandleMessage
Vcl.Forms.TApplication.Run
In diesem Teil von "TApplication.Run" lande ich auch, wenn ich von OnIdle weitergehe:
Delphi-Quellcode:
procedure TApplication.Run;
[...]
repeat
try
HandleMessage;
except
HandleException(Self);
end;
until Terminated;
[...]
Dass die Anwendung auf Messages hört, überrascht mich jetzt eher nicht. Also ganz normales Verhalten? Oder sollte das so doch nicht sein?
Habe das mehrfach mit dem gleichen Ergebnis durchgespielt. Bringt es was, das ganz oft weiter zu wiederholen, in der Hoffnung, ein Mal wo anders zu landen beim Anhalten?