Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Einem Thread Variablen übergeben
alexschultze - So 08.12.02 12:38
Titel: Einem Thread Variablen übergeben
ahoi,
ich habe mein Programm, und das soll ein Thread starten. Alles einfach.
Starten mit test.Create();
Aber!
Kann ich diesem Thread wie einer Prozedur oder einer Funktion auch Variablen übergeben?
green
Andreas Pfau - Mi 18.12.02 11:35
Du kannst eine globale Variable deklarieren. Wenn die Variable während der Ausführung des threads verändert werden kann, musst du noch so eine art "valid-flag" deklarieren:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| var test: tthread; form1: tform1; var1: integer; var1valid: boolean;
procedure ttest.execute; begin repeat if var1valid then begin flag1valid := false; verarbeiten(var1); end; until ; end;
procedure tform1.button1click(sender: tobject); begin var1 := 123; var1valid := true; end; |
PS: evtll könnte es auch mit messages klappen, dann müsstest du bei jedem thread-durchlauf Application.ProcessMessages() aufrufen;
Moderiert von
Klabautermann: Code- durch Delphi-Tags ersetzt
Klabautermann - Mi 18.12.02 12:14
Hallo,
du kannst den Constructor für dein Thread-Objekt so definieren, das er die Parameter verlangt.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| test = class(TThread) private protected fWert : LongInt; procedure Execute; override; public constructor Create(Wert : LongInt; CreateSuspended : BOOLEAN = TRUE); end;
[...] constructor test.Create(Wert: Integer; CreateSuspended: BOOLEAN); begin Inherited Create(CreateSuspended); fWert := Wert; [...] end; |
Gruß
Klabautermann
Moderiert von
Klabautermann: Code- durch Delphi-Tags ersetzt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!