Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Jedem Form seinen eigenen Thread? (https://www.delphipraxis.net/192966-jedem-form-seinen-eigenen-thread.html)

p80286 7. Jun 2017 06:40

Delphi-Version: 7

Jedem Form seinen eigenen Thread?
 
Da in der Literatur die Aussagen hierzu etwas widersprüchlich sind, frage ich Euch einmal.
Hat jedes Form einen eigenen Thread oder ist der "Anwendungsthread" für alle Forms zuständig?


Gruß
K-H

haentschman 7. Jun 2017 06:45

AW: Jedem Form seinen eigenen Thread?
 
Moin...:P
Zitat:

Hat jedes Form einen eigenen Thread oder ist der "Anwendungsthread" für alle Forms zuständig?
8-) Der Anwendungsthread ist für alle Forms zuständig. Wo hast du was anderes gelesen?

himitsu 7. Jun 2017 07:47

AW: Jedem Form seinen eigenen Thread?
 
Die VCL läuft nur in einem Thread, der zufällig absichtlich auch der Hauptthread/MainThread der VCL-Anwendung ist.
Die VCL wurde da gestartet/initialisiert und da in Windows Forms/Komponenten an den Thread gebunden sind, in welchem sie erstellt wurden (CreateWindow), landen auch alle ihre Messages in jenem Thread.

Die VCL nutzt untereinander globale nicht-threadsichere Objekte/Listen, also kann man die Forms nicht aufteilen.

Aber prinzipiell bietet Windows es an, dass man einzelne Forms/Komponenten in eigenen Threads erstellt, wenn man ihre Messages dort auch verarbeitet.
Die VCL verarbeitet von sich aus nur die Messages des MainThreads.

p80286 7. Jun 2017 14:34

AW: Jedem Form seinen eigenen Thread?
 
Danke!
Himitsu hat beinahe wörtlich das wiedergegeben, was mich so verunsichert hatte.

Gruß
K-H

jaenicke 7. Jun 2017 16:30

AW: Jedem Form seinen eigenen Thread?
 
Aber es gibt auch Möglichkeiten Fenster in separaten Threads unterzubringen, als Beispiel:
https://github.com/jaenicke/MTCL

Delphi-Laie 8. Jun 2017 07:16

AW: Jedem Form seinen eigenen Thread?
 
Zitat:

Zitat von p80286 (Beitrag 1373625)
Da in der Literatur die Aussagen hierzu etwas widersprüchlich sind, frage ich Euch einmal.
Hat jedes Form einen eigenen Thread oder ist der "Anwendungsthread" für alle Forms zuständig?

Ein Blick in den Taskmanager (vorher Threadspalte unter "Ansicht" hinzuschalten), Process Explorer oder Co. beantwortet diese Frage sofort.

p80286 8. Jun 2017 08:00

AW: Jedem Form seinen eigenen Thread?
 

Meine Beispielanwendung hat nach dem Start 1 Thread, nach dem Laden einer Datei 13, beim Lauf des zweiten Threads 18 und danach wieder 13!
Ich habe den Eindruck, daß da dll/Treiber ein "Thread-Eigenleben" führen.

Gruß
K-H

P.S.
andere Anwendungen geben sich mit weniger zufrieden. (1..5)

sakura 8. Jun 2017 08:18

AW: Jedem Form seinen eigenen Thread?
 
Zitat:

Zitat von p80286 (Beitrag 1373792)
Meine Beispielanwendung hat nach dem Start 1 Thread, nach dem Laden einer Datei 13, beim Lauf des zweiten Threads 18 und danach wieder 13!
Ich habe den Eindruck, daß da dll/Treiber ein "Thread-Eigenleben" führen.

Das ist aber normal und Delphi-VCL-Anwendungen haben ein paar eigene. Auch bei anderen Anwendungen erhöht sich die Anzahl leicht, wenn du zum Beispiel den Dialog "Datei öffnen" startest. Teste mal an Notepad, keine Delphi-Anwendung ;-)

...:cat:...


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