AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Verständnisfrage Thread...

Ein Thema von calibra301 · begonnen am 13. Feb 2018 · letzter Beitrag vom 16. Feb 2018
Antwort Antwort
Seite 1 von 2  1 2   
calibra301

Registriert seit: 20. Mär 2009
48 Beiträge
 
#1

Verständnisfrage Thread...

  Alt 13. Feb 2018, 09:10
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
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
1.474 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: Verständnisfrage Thread...

  Alt 13. Feb 2018, 09:45
Über Quelltext zu reden ist wie über Architektur zu tanzen.

Zeig uns doch mal was, weil so ist das Glaskugel wischen.
  Mit Zitat antworten Zitat
calibra301

Registriert seit: 20. Mär 2009
48 Beiträge
 
#3

AW: Verständnisfrage Thread...

  Alt 13. Feb 2018, 09:53
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;
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
4.658 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Verständnisfrage Thread...

  Alt 13. Feb 2018, 09:54
Meine Glaskugel sagt mir er hat thread.Execute statt thread.Start aufgerufen

Edit: Mist! Ich hab den Code vorher wirklich nicht gesehen bevor ich gepostet hab!
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General (13. Feb 2018 um 09:57 Uhr)
  Mit Zitat antworten Zitat
calibra301

Registriert seit: 20. Mär 2009
48 Beiträge
 
#5

AW: Verständnisfrage Thread...

  Alt 13. Feb 2018, 09:54
Ach ja,

und dieses "Arbeite diverses Elend ab..." wird unterbrochen
wenn ich im Mainform z.B. ein Mainmenue öffne...

Gruss
Calli
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
4.658 Beiträge
 
Delphi 2010 Professional
 
#6

AW: Verständnisfrage Thread...

  Alt 13. Feb 2018, 09:56
Ach ja,

und dieses "Arbeite diverses Elend ab..." wird unterbrochen
wenn ich im Mainform z.B. ein Mainmenue öffne...

Gruss
Calli
Siehe meine Glaskugel-Antwort eins drüber.
Außerdem muss das application.ProcessMessages; aus dem Thread raus!
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
204 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

AW: Verständnisfrage Thread...

  Alt 13. Feb 2018, 10:07
Vielleicht ist in dem Elend auch noch ein application.ProcessMessages; drin ...
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
204 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

AW: Verständnisfrage Thread...

  Alt 13. Feb 2018, 10:08
und dieses "Arbeite diverses Elend ab..." wird unterbrochen
Kann ja gar nicht sein, dass ist ja nur ein Kommentar. Du hast uns schon wieder Quelltext unterschlagen
  Mit Zitat antworten Zitat
calibra301

Registriert seit: 20. Mär 2009
48 Beiträge
 
#9

AW: Verständnisfrage Thread...

  Alt 13. Feb 2018, 11:02
@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.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
1.474 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

AW: Verständnisfrage Thread...

  Alt 13. Feb 2018, 11:16
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.
Machen wir einen Deal:
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?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:

Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2017 by Daniel R. Wolf