Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Mit Threads sichtbare Formen erzeugen. Macht das Sinn? (https://www.delphipraxis.net/189780-mit-threads-sichtbare-formen-erzeugen-macht-das-sinn.html)

ScharfeMietze 20. Jul 2016 12:18

Mit Threads sichtbare Formen erzeugen. Macht das Sinn?
 
Ich würde gerne eure Meinung hören ob das vollkommen sinnfrei ist.

Ich würde gerne eine Main-VCL-Form starten, diese hat verschiedene Objekte, Listen und Co.
Nun sollen verschiedene Jobs über Threads gestartet werden. (per Klick auf Buttons).
Diese Jobs haben nichts miteinander zu tun, kommen sich also nicht gegenseitig ins Gehege.

Ich möchte das die Threads Vcl Formen erstellen und diese steuern. Wenn der Job der erstellten Form erledigt ist, fragt der Thread das Ergebnis über eine Propety ab, verarbeitet das Ergebnis, zerstört die Form und sendet das Ergebnis an die "Main-Form".

Kann man generell so vorgehen, oder ist dieses Konstuckt abartig.

Mich würden da einfach mal eure Meinungen Interessieren. Es gibt auch noch keine Zeile Code sondern nur eine Idee für ein zukünftiges Projeckt.

Gruß
SM;)

-=ZGD=- 20. Jul 2016 12:28

AW: Mit Threads sichtbare Formen erzeugen. Macht das Sinn?
 
Hello.

Wozu soll denn der Thread extra ein Formular erstellen. Wenn es nur dafür benötigt wird, kann man doch einfacher mit Klassen/Objekten arbeiten?

Grüße,
Ebenfalls SM

jaenicke 20. Jul 2016 13:01

AW: Mit Threads sichtbare Formen erzeugen. Macht das Sinn?
 
Für den Zweck musst du dann non-VCL Fenster benutzen. Das funktioniert dann problemlos.

Bernhard Geyer 20. Jul 2016 13:10

AW: Mit Threads sichtbare Formen erzeugen. Macht das Sinn?
 
Threads und VCL-Forms ist ein No-Go.
Da wird es früher oder später gewaltig krachen.

Hintergrund:
Alle Windows-Handles/GDI-Ressourcen sind nur im erzeugenden Thread gültig.
Du erzeugst zwar das Formular im Thread (und damit könnt man in diesem Thread drauf zugreifen). Es wird aber auch öfter auf die globalen Instanzen Screen und Application zugegriffen, welche Handles haben welche im Hauptthread erzeugt wurden. Und bei diesen wird es dann früher oder später krachen.

ScharfeMietze 24. Jul 2016 10:53

AW: Mit Threads sichtbare Formen erzeugen. Macht das Sinn?
 
Ich möchte eine eigentlich über den Thread eine eigenständige Form erstellen die NICHT auf die Mainform zugreift (sondern wirklich eigenständig arbeiten) die Ergebnisse würden vom Thread ausgelesen und verarbeitet werden.
Der Thread soll ja eine sichtbare Form erstellen, sonst könnte ich ja den Thread selbst den Job tun lassen.
Ich würde ja gerne den Thread die "Steuerung" der Formen überlassen.

Ps: NonVcl ?? Hatte ich noch nie zwischen meinen Fingern. Ich denke daher das der Mehraufwand größer wäre als das Projekt "anders" zu planen.

Natürlich kann man auch mit klassen und Co Arbeiten, Ich würde aber gerne wissen was mit Threads möglich ist. Wobei mir klar ist das Threads mit sichtbaren Komponenten nicht gerade einfach und gut Kirschen-essen ist.


Alle Anregungen sind willkommen:)
Gruß

SM;)

jaenicke 24. Jul 2016 11:13

AW: Mit Threads sichtbare Formen erzeugen. Macht das Sinn?
 
Zitat:

Zitat von ScharfeMietze (Beitrag 1343232)
Ps: NonVcl ?? Hatte ich noch nie zwischen meinen Fingern. Ich denke daher das der Mehraufwand größer wäre als das Projekt "anders" zu planen.

Das kommt darauf an. In unserem Fall ging es lediglich um eine Logausgabe, sprich einen Button und ein Memofeld. Das ist schnell gemacht. Größere Formulare sind natürlich aufwendiger.

Sir Rufo 24. Jul 2016 11:16

AW: Mit Threads sichtbare Formen erzeugen. Macht das Sinn?
 
Die einzige Arbeit die eine Form erledigen sollte, ist die Kommunikation mit dem Benutzer. Man spricht deshalb auch vom UI (UserInterface). Eine freundliche UI ist vor allem immer aufmerksam (responsive).

Ein Download500GbFileFromInternet Button sollte nichts weiter machen als auf diesen Wunsch des Benutzers zu reagieren und entsprechend weiterleiten. Die gewünschte Aktion selber wird im Hintergrund (Thread) erledigt weil sonst die UI für Minuten/Stunden nicht mehr reagiert.

Bernhard Geyer 24. Jul 2016 11:37

AW: Mit Threads sichtbare Formen erzeugen. Macht das Sinn?
 
Zitat:

Zitat von ScharfeMietze (Beitrag 1343232)
Ich möchte eine eigentlich über den Thread eine eigenständige Form erstellen die NICHT auf die Mainform zugreift

Das macht die VCL schon ganz alleine.
Besser wäre es das Formular normal zu erzeugen und den Workerthread vom Formular erzeugen zu lassen.
Es gibt genügend Möglichkeiten dann vom Thread die Aktualsierungsinformationen ans Formular zu bringen.

Sir Rufo 24. Jul 2016 11:44

AW: Mit Threads sichtbare Formen erzeugen. Macht das Sinn?
 
Hmmm, ich würde den Thread nicht mit der Form verdengeln.

Besser ist es eine Aufgabe zu definieren, die dann in einem Thread erledigt wird. Diese Aufgabe kann dann auch in einer Form dargestellt werden.

Nur so hat man ein Konzept, wo es nicht notwendig ist, die Form zwangsweise geöffnet zu haben (weil ja die Verarbeitung der Aufgabe noch nicht abgeschlossen wurde).

Der Benutzer/Programmierer kann jetzt frei entscheiden, ob man einer Aufgabe zusehen möchte oder muss.

jaenicke 24. Jul 2016 18:53

AW: Mit Threads sichtbare Formen erzeugen. Macht das Sinn?
 
Dafür implementiert bei uns das Formular ein Interface, das die Meldungen bekommt. Das muss natürlich nicht da sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:49 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