Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Simples Programm blockiert den ganzen Rechner (https://www.delphipraxis.net/209381-simples-programm-blockiert-den-ganzen-rechner.html)

Rainer Wolff 29. Nov 2021 11:16

Delphi-Version: 10.4 Sydney

Simples Programm blockiert den ganzen Rechner
 
Hallo,

eigentlich bin ich auf der Suche nach gang anderen Programmfehlern, deshalb habe ich mein Programm so weit abgespeckt, daß es in einer Schleife am Ende nur noch eine Zahl in den Titelbalken des Fensters schreibt (VCL).

Warum zefix wird denn dabei der komplette Rechner blockiert, auch noch nachdem die Schleife durchgelaufen ist?
Und das sowohl unter 10.4, 10.2 als auch D2007.
BS: Windows 10 akt.

Code:
procedure TForm15.Button1Click(Sender: TObject);
var
  I:Integer;
begin
  for i := 0 to 1000000 do
  begin
    caption:=inttostr(i);
  end;
end;

dummzeuch 29. Nov 2021 11:21

AW: Simples Programm blockiert den ganzen Rechner
 
Was genau meinst Du mit "der ganze Rechner blockiert"? Kann man keine anderen Programme ausführen? Noch nicht einmal den Taskmanager?

Eigentlich sollte dieser Code nur einen Core zu 100% auslasten, das ist bei den meinsten modernen Rechnern kein Problem.

Phoenix 29. Nov 2021 11:23

AW: Simples Programm blockiert den ganzen Rechner
 
WEIL: Das Updaten der Caption / Titelzeile eines Fensters passiert in der Windows-Messageloop. Und die zeichnet das instant.
Du spammst also das ganze UI-System von Windows mit einer Millionen Messages an Dein eigenes Fenster voll, die alle erstmal einzeln abgearbeitet werden müssen.

himitsu 29. Nov 2021 15:01

AW: Simples Programm blockiert den ganzen Rechner
 
Das ist normal ... der DesktopWindowManager hat hier ein kleines Problemchen, wenn er massenhaft Captions am Fenster und womöglich auch in der Startleiste aktualisieren muß.

Ist schon seit über 10 Jahren so und wird sich wohl auch nicht mehr ändern, da Dieses kein "normales" Verhalten ist.

jaenicke 29. Nov 2021 17:26

AW: Simples Programm blockiert den ganzen Rechner
 
Deshalb aktualisiert man solche Anzeigen normalerweise nur in gewissen Zeitabständen oder alle x Schleifendurchläufe.

Rainer Wolff 29. Nov 2021 19:45

AW: Simples Programm blockiert den ganzen Rechner
 
Zitat:

Zitat von jaenicke (Beitrag 1498377)
Deshalb aktualisiert man solche Anzeigen normalerweise nur in gewissen Zeitabständen oder alle x Schleifendurchläufe.

Wenn man es denn weiss. Ohne die Antworten hätte ich jetzt wahrscheinlich noch unter den letzten Windows-Versionen den Vergleichsbenchmark gemacht.
:-D

Monday 30. Nov 2021 03:09

AW: Simples Programm blockiert den ganzen Rechner
 
Dumme Frage:
bei einem label passiert das gleiche?

Rainer Wolff 30. Nov 2021 06:34

AW: Simples Programm blockiert den ganzen Rechner
 
Zitat:

Zitat von Monday (Beitrag 1498390)
Dumme Frage:
bei einem label passiert das gleiche?

Ich habs gestern noch mit einer Button-Caption versucht, flackert wie Sau, aber das restliche System ist nicht beeindruckt davon.

venice2 30. Nov 2021 06:38

AW: Simples Programm blockiert den ganzen Rechner
 
Zitat:

Zitat von Monday (Beitrag 1498390)
Dumme Frage:
bei einem label passiert das gleiche?

Wenn du einen Label als Caption verwendest sollte es eigentlich nicht auftreten dabei kommt es aber darauf an wie du das meinst.
Wobei aber fraglich ist ob das Caption sichtbar neu-gezeichnet wird wenn die CPU ausgelastet ist.

jaenicke 30. Nov 2021 07:48

AW: Simples Programm blockiert den ganzen Rechner
 
Bei einem Label sollte das in der Theorie zumindest so nicht passieren, denn das ist ja kein Windows Control und bekommt deshalb auch zum Setzen des Textes nicht Nachrichten zugeschickt. Sprich es gibt keine solchen Nachwirkungen nach dem Ende der Schleife. Lediglich das Neuzeichnen könnte etwas in der Richtung auslösen, sollte sich aber nicht so stark auswirken.

Den Programmablauf verlangsamen tut es natürlich dennoch enorm, wenn man es zu oft aktualisiert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz