Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Thread Problem (https://www.delphipraxis.net/44836-thread-problem.html)

DerAndereMicha 26. Apr 2005 11:06

Re: Thread Problem
 
Verstehe ich das richtig, wenn ich in dem abgespaltenen Thread ein Formular mittels Create erzeuge und anschließend auch in diesem Thread mit ShowModal zur Anzeige bringe, führt diese Aktionen trotzdem der Hauptthread aus???

Motzi 26. Apr 2005 11:19

Re: Thread Problem
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Sanchez
Zurzeit setzt du irgendwelche Properties im Thread und bringst den Haupthread dazu das Form zu zeichnen, oder? Du solltest den Haupthread dazu bringen, die verschiedenen Properties zu setzen.

Messages sind an dieser Stelle optimal geeignet..! Messages können im Zusammenhang mit Threads überhaupt sehr praktisch sein und auch zur Synchronisierung verwendet werden. Hab mal ein kleines Beispiel-Prog mit Threads und Messages angehängt.

Luckie 26. Apr 2005 12:00

Re: Thread Problem
 
Und hier für die Runterlad-Faulen: http://www.luckie-online.de/Delphi/S...Nachricht.html ;)

DerAndereMicha 26. Apr 2005 13:46

Re: Thread Problem
 
Ich glaub ich steh auf dem Schlauch...

Wenn ich Eure Quelltexte (Danke übrigens) richtig verstehe wird doch bei Euch der Hauptthread durch ne Message dazu veranlaßt etwas auf der Hauptform zu zeichnen. Das ist ja gut und schön und funktioniert bei mir auch, allerdings kann ich auch z.B.die Caption der Hauptform direkt aus dem Thread heraus ändern (Mainform.Caption:='Test') und es funktioniert genau so.

Mein Formular (welches nicht das Hauptformular ist) und dynamisch im Thread erzeugt wird, wird aber einfach nicht komplett gezeichnet. Von welcher Form soll ich da ne Message senden und welche Form soll sie empfangen und darauf reagieren. Es gibt nur ein Showmodal im Thread und das funzt nicht.

Ich hoffe ich nerve Euch nicht allzusehr mit meiner Dummheit...

Sanchez 26. Apr 2005 13:59

Re: Thread Problem
 
Zitat:

Zitat von DerAndereMicha
Das ist ja gut und schön und funktioniert bei mir auch, allerdings kann ich auch z.B.die Caption der Hauptform direkt aus dem Thread heraus ändern (Mainform.Caption:='Test') und es funktioniert genau so.

Da kannst du aber nicht davon ausgehen, dass es immer funktioniert. Meistens funktionierts, manchmal aber nicht. Von deinem Thread aus solltest du auf gar kein Formular direkt zugreifen. Dafür ist die VCL nicht ausgelegt. Wenn dein Thread irgendein Fenster aktualisieren soll, dann sollte er eine Message an genau dieses Fenster senden.

Motzi 26. Apr 2005 20:02

Re: Thread Problem
 
Oh.. ich les gerade, dass du in einem abgespalteten Thread dynamisch eine Form erzeugst. Das solltest du unter allen Umständen vermeiden!!! Die VCL ist nicht threadsafe, und auch wenn du in deinen Threads nicht auf die Formen des jeweils andren Threads zugreifst, so weißt du trotzdem nicht, was die VCL intern macht und welche Objekte intern von allen TForm und Instanzen anderer Komponenten gemeinsam verwendet werden etc, wobei KEINE Thread-Synchronisation stattfindet.
Schlußfolgerung: VCL-Formen immer nur im Hauptthread, benötigst du zwingend ein Fenster in einem abgespalteten Thread, dann nur nonVCL!

DerAndereMicha 27. Apr 2005 07:16

Re: Thread Problem
 
Danke Euch Allen. Ich werde die Form wohl doch irgendwie versuchen aus dem Thread auszulagern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz