AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Mit Threads sichtbare Formen erzeugen. Macht das Sinn?
Thema durchsuchen
Ansicht
Themen-Optionen

Mit Threads sichtbare Formen erzeugen. Macht das Sinn?

Ein Thema von ScharfeMietze · begonnen am 20. Jul 2016 · letzter Beitrag vom 7. Aug 2016
Antwort Antwort
Seite 1 von 2  1 2      
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#1

Mit Threads sichtbare Formen erzeugen. Macht das Sinn?

  Alt 20. Jul 2016, 12:18
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
  Mit Zitat antworten Zitat
-=ZGD=-

Registriert seit: 25. Apr 2006
Ort: Bad Aibling
105 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

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

  Alt 20. Jul 2016, 12:28
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
Stefan Michalk
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

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

  Alt 20. Jul 2016, 13:01
Für den Zweck musst du dann non-VCL Fenster benutzen. Das funktioniert dann problemlos.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

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

  Alt 20. Jul 2016, 13:10
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#5

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

  Alt 24. Jul 2016, 10:53
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

Geändert von ScharfeMietze (24. Jul 2016 um 11:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

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

  Alt 24. Jul 2016, 11:13
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

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

  Alt 24. Jul 2016, 11:16
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#8

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

  Alt 24. Jul 2016, 11:37
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

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

  Alt 24. Jul 2016, 11:44
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

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

  Alt 24. Jul 2016, 18:53
Dafür implementiert bei uns das Formular ein Interface, das die Meldungen bekommt. Das muss natürlich nicht da sein.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  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 02:36 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