Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
Delphi 12 Athens
|
AW: Code, der das Programm einfrieren lässt
13. Sep 2023, 10:24
Kommt auch drauf an, was man will.
Schleifen ohne Sleep halten an und lasten CPU einen Kern hoffentlich voll aus.
Mit einem Sleep oder WaitFor würde auch angehalten, aber der Thread/Kern arbeitet mit 0%.
Standardmäßig steht das HungApp-Timeout bei 3 Sekunden.
Also nach einem Hängen von 3 Sekuunden, würde Windows das Fenster als "reagiert nicht" markieren.
Allerdings nicht sofort, aber wenn man z.B. die Maus drüber hinweg bewegt, dann wird es ganz schnell registriert.
PS: In Wirklichkeint ersetzt/erweitert Windows nicht die Form-Caption, sondern macht einen Screenshot vom Fenster, blendet das Fenster aus und stellt ein Ersatzfenster dar, mit den Scrrenshot als Hintergrund und der neuen Caption (darum zuckt das auch so "brutal", wenn das Fenster wieder reagiert und wieder ausgetauscht / neu aufgebaut wird)
Also, ein while True do begin Sleep(15 {bis 30} * MSecsPerSec); Application.ProcessMessages; end;
, bzw. ein Timer mit Interval=1 und darin das Sleep, würde bereits ein schönes Hängen simulieren, wo es aber nicht permanent hängt.
OK, die Pause vielleicht doch besser anpassen, falls jemand das Setting geändert hat (HKEY_CURRENT_USER\Control Panel\Desktop : HungAppTimeout)
PS: Was auch nett ist, wäre vielleicht ein Stackoverflow, oder Ähnliches, wobei das Programm ohne Rückmeldung verreckt und wortlos verschwindet,
damit man es in der Ereignisanzeige nach dem Fehler suchen darf. (ein Eintrag unterm Programmnamen, aber vor allem der Eintrag vom WER / Windows Error Reporting)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
Geändert von himitsu (13. Sep 2023 um 10:36 Uhr)
|