Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Anwendungsinitialisierung in Thread auslagern

  Alt 17. Aug 2011, 12:09
Deswegen hab ich mal ne kleine Unit gebaut.
Also die Idee mit dem OnIdle ist wirklich nicht schlecht. Mit der Konstruktion wird der ganze Stapel von anhängigen Formularen asynchron erzeugt und auch bei geöffneten Formularen fortgesetzt.

Bernhard hat schon vollkommen recht: Die sauberste Lösung wäre die dynamische Erzeugung der Formulare bei Bedarf. Leider kann man gewachsene Projekte nur recht schwer auf soetwas umstellen. Bei neuen Projekten werde ich das aber in Zukunft so machen.

Allgemein gesprochen: Das ganze Konstrukt der Delphi-IDE-Formular-Assistenten erzeugt nicht gerade effizienten Code. Per Default wird jedes einzelne Formular mit seinem gesamten GDI-Gerümpel beim Programmstart geladen. Das kann man bei meinem jetzigen "Problemkind" sehr schön sehen. Ohne die asynchrone Formularerzeugung dauert der Programmstart 8 Sekunden. Mit async. dagegen nur 0,4 bis das MainForm steht. In beiden Fällen kann man eine schöne ansteigende Kurve im GDI-Monitor beobachten. Würde man die ganzen Formulare nur erzeugen wenn man sie braucht und dann wieder freigeben, ich glaub ich könnte 80% Speicherbedarf einsparen.

Aber wie gesagt, das geht mit vertretbarem Aufwand nur bei neuen Projekten.

Grüße
Cody
  Mit Zitat antworten Zitat