AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Simples Programm blockiert den ganzen Rechner

Ein Thema von Rainer Wolff · begonnen am 29. Nov 2021 · letzter Beitrag vom 30. Nov 2021
Antwort Antwort
Seite 1 von 2  1 2      
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
321 Beiträge
 
Delphi 10.4 Sydney
 
#1

Simples Programm blockiert den ganzen Rechner

  Alt 29. Nov 2021, 12:16
Delphi-Version: 10.4 Sydney
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;
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.623 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Simples Programm blockiert den ganzen Rechner

  Alt 29. Nov 2021, 12:21
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.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#3

AW: Simples Programm blockiert den ganzen Rechner

  Alt 29. Nov 2021, 12:23
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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Simples Programm blockiert den ganzen Rechner

  Alt 29. Nov 2021, 16:01
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.
$2B or not $2B

Geändert von himitsu (29. Nov 2021 um 16:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Simples Programm blockiert den ganzen Rechner

  Alt 29. Nov 2021, 18:26
Deshalb aktualisiert man solche Anzeigen normalerweise nur in gewissen Zeitabständen oder alle x Schleifendurchläufe.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
321 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Simples Programm blockiert den ganzen Rechner

  Alt 29. Nov 2021, 20:45
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.
  Mit Zitat antworten Zitat
Monday

Registriert seit: 24. Aug 2012
103 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Simples Programm blockiert den ganzen Rechner

  Alt 30. Nov 2021, 04:09
Dumme Frage:
bei einem label passiert das gleiche?
  Mit Zitat antworten Zitat
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
321 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Simples Programm blockiert den ganzen Rechner

  Alt 30. Nov 2021, 07:34
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.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#9

AW: Simples Programm blockiert den ganzen Rechner

  Alt 30. Nov 2021, 07:38
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.

Geändert von venice2 (30. Nov 2021 um 07:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Simples Programm blockiert den ganzen Rechner

  Alt 30. Nov 2021, 08:48
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:43 Uhr.
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