![]() |
TThread - Variable zur Laufzeit ändern
Hallo,
zu meinem Problem. Je nach Anfrage starte ich einen Thread für eine Remote-Administrator-Sitzung. Funktioniert auch problemlos, nur möchte ich jetzt gerne mehr als eine Sitzung gleichzeitig erlauben. Eine Variable setzen kann ich ja, wenn ich TThread.Variable := wert; setze. Aber was passiert jetzt, wenn der Thread mehrfach gestartet ist? Weil letztlich soll ja nur die lokale Variable des Thread gesetzt werden, der für den User erstellt wurde. Und muss ich den Thread erst pausieren, bevor ich die Variable setzen kann? Danke und Gruß StuffM |
Re: TThread - Variable zur Laufzeit ändern
Du musst das ganze in eine CriticalSection setzen um sicherzustellen das der Thread nicht auch gerade auf die Variable zugreift. Ansonsten ist es egal wieviel Threads du laufen hast da du ja Threadinstanze.Variable setzt und somit auch die Werte in jedem Thread getrennt sind.
|
Re: TThread - Variable zur Laufzeit ändern
ich verstehe nicht ganz, wie ich die Instanz des Threads unterscheiden soll, weil der Aufruf erfolgt wiefolgt:
Delphi-Quellcode:
Wenn ich das mehrfach aufrufe, ist laut nem kleinen Test von mir, der Thread auch mehrfach gestartet. Aber da könnte ich ihn ja nicht unterscheiden?
with TMyThread.Create(True) do
begin FreeOnTerminate := True; Resume; end; |
Re: TThread - Variable zur Laufzeit ändern
Hi StuffMasterz,
in dem Fall musst du ein array of TMyThread erstellen, und die Ergebnisse des Creates ins array speichern. also z.B.:
Delphi-Quellcode:
Anschließend kannst du auch auf die einzelnen Threads zugreifen. Die Behandlung des Arrays mit den einzelnen Threadelementen musst du aber selbst vornehmen.
var
MeinArray: array of TMyThread; begin SetLength(MeinArray, Length(MeinArray)+1); MeinArray[Length(MeinArray)-1] := TMyThread.Create(True); with MeinArray[Length(MeinArray)-1] do begin FreeOnTerminate := True; Resume; end; Greetz alcaeus |
Re: TThread - Variable zur Laufzeit ändern
Hätt ich eigentlich auch selbst drauf kommen können :roll:
Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:11 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-2025 by Thomas Breitkreuz