![]() |
Verständnisfrage Thread...
Hallo,
vielleicht hab ich ja die falschen Vorstellungen, aber sollte ein Thread nicht unabhänging vom Rest (Mainthread ) laufen ? Ich habe im Mainform eine globale boolsche Variable "Running". Der Thread ist eine globale Variable MeinThread:TMeinThread; Nach Klick auf Start wird der Thread erzeugt und läuft in einer while Running=true Schleife ewig durch. Das löppt soweit. Setzt das Mainform running auf false wird die Schleife verlassen und der Thread "zerstört". Mein Problem: Mache ich irgendwas anderes auf dem Mainform, z.B. ein Menue öffnen dann bleibt der Thread stehen. Welchen Denkfehler hab ich da ? Danke und Gruss Calli |
AW: Verständnisfrage Thread...
Über Quelltext zu reden ist wie über Architektur zu tanzen.
Zeig uns doch mal was, weil so ist das Glaskugel wischen. :glaskugel: |
AW: Verständnisfrage Thread...
Sorry :-)
Delphi-Quellcode:
// Globale Variable in MainUnit: var OutputEngine:TOutputEngine; // Deklaration in anderer Unit: type TOutputEngine = class(TThread) Private public RunActive:Boolean; constructor Create; destructor Destroy; override; procedure Execute(); override; Procedure PreRun; Procedure PostRun; end; // StartButton im Mainform: OutputEngine:=TOutputEngine.Create; OutputEngine.Priority := tpHigher; OutputEngine.RunActive:=true; OutputEngine.Execute; // Dann in Schleife Procedure TOutputEngine.Execute; var i:Integer; Time:Word; Begin PreRun; Time:=0; while RunActive=true do Begin // Arbeite diverses Elend ab so lange Runactive=true; End; application.ProcessMessages; End; PostRun; End; |
AW: Verständnisfrage Thread...
Meine Glaskugel sagt mir er hat thread.Execute statt thread.Start aufgerufen :glaskugel:
Edit: Mist! Ich hab den Code vorher wirklich nicht gesehen bevor ich gepostet hab! :mrgreen: |
AW: Verständnisfrage Thread...
Ach ja,
und dieses "Arbeite diverses Elend ab..." wird unterbrochen wenn ich im Mainform z.B. ein Mainmenue öffne... Gruss Calli |
AW: Verständnisfrage Thread...
Zitat:
Außerdem muss das application.ProcessMessages; aus dem Thread raus! |
AW: Verständnisfrage Thread...
Vielleicht ist in dem Elend auch noch ein application.ProcessMessages; drin ...
|
AW: Verständnisfrage Thread...
Zitat:
|
AW: Verständnisfrage Thread...
@NeutralGeneral,
schön das sich deine Glaskugel offenbar guter Pflege erfreut :-) Mit "Start" statt "Execute" macht der Thread nun teilweise was er soll. Teilweise weil: "Arbeite diverses Elend ab..." endet mit einer OpenGL Ausgabe. Die geht nun nicht mehr. Die Zeichenroutine ist Teil der TOutputengine. Die "TOutputengine.drawGL" hab ich im Codebeispiel unterschlagen. Der Handle für das OpenGL ist eine globale Variable vom Mainform. |
AW: Verständnisfrage Thread...
Zitat:
Du siehst zu, dass die ganze OpenGL Ausgabe rein im Main Thread funktioniert und danach kümmern wir uns darum das Rendering in einen eigenen Thread auszulagern? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:23 Uhr. |
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 by Thomas Breitkreuz