Bei Threads sollte man gedanklich einen ganz anderen Ansatz wählen.
Ein Thread ist wie ein Baby - sämtliches Spielzeug muss ihm von seiner Mama gegeben werden.
Ein Thread sollte selbst nie in die Verlegenheit kommen irgendwelche Daten zu holen.
Beispiel:
Ein Thread soll über eine serielle Schnittstelle kommunizieren.
Die Daten dazu (COMx, Baudrate, Parity,..) stehen in einer Ini-Datei.
Anstatt dass der Thread die Ini-Datei öffnet und die Daten ausliest, hat der Thread entsprechende Properties (Baudrate, usw) und der Hauptthread liest die Ini-Datei und füttert den Thread vor dem Start mit Daten.
Dann gehen wir noch einen Schritt weiter.
Der Thread benötigt die Parameter Baudrate, Parity, usw eigentlich gar nicht.
Was er wirklich braucht ist ein geöffnetes TSerialPort-Objekt.
Delphi-Quellcode:
TKommunikationsThread = Class(TThread)
private
FSerialPort : TSerialPort;
public
procedure Execute; override;
// muss von Aussen übergeben werden
property SerialPort:TSerialPort read FSerialPort write FSerialPort;
end;
Das TSerialPort kann auch als Parameter über den Konstruktor übergeben werden.