Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Application.CreateForm in einem Thread (https://www.delphipraxis.net/192666-application-createform-einem-thread.html)

SneakyBagels 9. Mai 2017 17:14

Delphi-Version: 10 Berlin

Application.CreateForm in einem Thread
 
Ist es generell eine schlechte Idee ein Application.CreateForm in einem TTask aufzurufen? Oder bringt das keinerlei Vorteile?
Ich versuche gerade ein bisschen die Wartezeiten optimieren und es gibt genau ein Formular welches etwa 2 Sekunden braucht, bis es komplett erzeugt wurde.
Es ist nur eine Komponente drauf, die ich hier im Forum gefunden habe.

Der schöne Günther 9. Mai 2017 17:16

AW: Application.CreateForm in einem Thread
 
"Ist es generell eine schlechte Idee ... *VCL* und *Thread*?"

Antwort: Ja.

Hobbycoder 9. Mai 2017 17:26

AW: Application.CreateForm in einem Thread
 
Eine Komponente, die 2 Sekunden braucht um sich zu erzeugen? Wenn du die hier gefunden hast, dann poste doch mal den Link.

BrightAngel 9. Mai 2017 17:27

AW: Application.CreateForm in einem Thread
 
Was allerdings wirklich spannend sein kann: Warum läd dein Formular ca 2 Sekunden? Gibt es da vielleicht noch Möglichkeiten die "Datenbeschaffung" (ich erlaube mir das mal so zwischen den Zeilen zu lesen...:thumb:) und tatsächliche Oberflächenobjektinstanziierung zu trennen? :P

Brighty :)

[Edit]
Hobbycoder, da hatten wir wohl den selben unterschwelligen Gedanken :D
[/Edit]

Der schöne Günther 9. Mai 2017 17:37

AW: Application.CreateForm in einem Thread
 
Aber das ist doch nicht abwegig viel?

Ich habe nie mit einem Profiler wirklich nachgemessen, aber eine unserer Anwendungen braucht auch mehrere Sekunden für den Aufbau des Hauptformulars. Ist in der IDE im Formular-Designer für die einzelnen Frames nicht anders, in der Summe erscheint mir das plausibel...

SneakyBagels 9. Mai 2017 17:39

AW: Application.CreateForm in einem Thread
 
Mein Formular enthält nur eine einzige Komponente die man wie gesagt hier im Forum findet. Es ist eine Art TreeView mit CheckBoxen.
Ich habe schon überlegt die mit einer VirtualStringTree selber neu zu erstellen aber dafür fehlt es mir an Grundkenntnissen bezüglich VirtualStringTree.

Hobbycoder 9. Mai 2017 18:06

AW: Application.CreateForm in einem Thread
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1370799)
Aber das ist doch nicht abwegig viel?

Ich habe nie mit einem Profiler wirklich nachgemessen, aber eine unserer Anwendungen braucht auch mehrere Sekunden für den Aufbau des Hauptformulars. Ist in der IDE im Formular-Designer für die einzelnen Frames nicht anders, in der Summe erscheint mir das plausibel...

Beim start einer Application oder beim Aufbau einer Form oder Frames innerhalb der IDE ist dagegen auch nichts zu sagen.

Aber das erzeugen "einer" Komponente zur Laufzeit....ist vielleicht doch "möglicherweise" etwas zu viel. (Ich sage bewusst Möglicherweise).

Zitat:

Zitat von SneakyBagels (Beitrag 1370800)
Mein Formular enthält nur eine einzige Komponente die man wie gesagt hier im Forum findet. Es ist eine Art TreeView mit CheckBoxen.
Ich habe schon überlegt die mit einer VirtualStringTree selber neu zu erstellen aber dafür fehlt es mir an Grundkenntnissen bezüglich VirtualStringTree.

Nenn die Komponente doch mal beim Namen. Wenn sie hier veröffentlich ist, spricht doch nichts dagegen. Danach suchen...hab ich keinen Bock.

Hast eine Datenbindung ggf. in der IDE bereits getätigt? Das könnte natürlich dazu führen, dass die Komponente währende des Erzeugens bereits Daten einliest, und das könnte die Ursache sein.
Versucht dann doch mal, die Daten etwas später bereit zustellen. Innerhalb der Anwendung kannst du evtl. das Laden der Daten dann nämlich im Thread machen, und sie dann an die Komponente binden / übergeben.

Solange wir aber nicht wissen, worum es geht, sind das alles Blicke in die Glaskugel.

himitsu 9. Mai 2017 18:33

AW: Application.CreateForm in einem Thread
 
Zitat:

Aber das erzeugen "einer" Komponente zur Laufzeit....ist vielleicht doch "möglicherweise" etwas zu viel. (Ich sage bewusst Möglicherweise).
Das Erzeugen einer Komponente mit wer weiß wievielen Knoten darf auch längere Zeit dauern, wenn man zuviele Knoten hat.

SneakyBagels 9. Mai 2017 18:34

AW: Application.CreateForm in einem Thread
 
Es sind die hier erwähnten GTRO-Controls. http://www.delphipraxis.net/192503-c...sserungen.html http://www.delphipraxis.net/192614-s...uer-tokyo.html
Zu deiner spezifischen Frage: in der IDE ist der Desktop standardmäßig eingestellt. Soweit ich herausfinden konnte dauert das Erstellen der Einträge lange, wenn die Objekt-Typen auf [otFolders,otNonFolders,otHidden] stehen. Sind sie leer, wird das Formular recht schnell aufgebaut. Daher auch meine Idee das mit einer VirtualStringList nachzubauen aber das Grundwissen fehlt.

Aviator 9. Mai 2017 18:46

AW: Application.CreateForm in einem Thread
 
Zitat:

Zitat von SneakyBagels (Beitrag 1370809)
Daher auch meine Idee das mit einer VirtualStringList nachzubauen aber das Grundwissen fehlt.

Das sollte das geringere Problem darstellen. Beim VST sind diverse gute Demos dabei um wenigstens mal die Basics zu erlernen.

Wenn ich heute abend noch Zeit habe, dann bastele ich dir mal etwas ganz kleines zusammen bei dem du wenigstens mal die Nodes erstellen und die Texte anzeigen lassen kannst.

Den CheckSupport (also Anzeige von CheckBoxen) kann man dann noch nachträglich hinzufügen.

Woher kommen denn deine Daten? Kannst du evtl. mal eine kleine Struktur aufzeigen, wie die Daten aussehen? Welche Properties gibt es?

Ich würde dir auf jeden Fall empfehlen, dir den VST anzuschauen und dir das Wissen darüber anzueignen. Die Komponente ist Gold wert und um ein Vielfaches schneller als andere Komponenten. Ich benutze sie nur noch und bin seit dem Umstieg begeistert. Allerdings arbeite ich mittlerweile schon seit bestimmt 3 Jahren damit. Da kennt man so ziemlich alles vom VST und hat auch schon fast alles damit gemacht.

Und ich denke, dass es bestimmt noch einige andere User hier im Forum gibt, die dir ebenfalls gerne beim Lernen im Umgang mit dem VST helfen werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:53 Uhr.
Seite 1 von 3  1 23      

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