Ein Pointer auf eine Variable einer Instance von TStringList ist an sich schon wiedersinnig.
Es kann nicht sichergestellt werden, dass die Variable oder der Inhalt der Stringliste außerhalb verändert wird oder überhaupt noch gültig ist.
Mit einer Kopie der Stringliste zu arbeiten, erscheint mit sicherer.
Delphi-Quellcode:
type
TFileWalker = class(TThread)
protected
procedure Execute; override;
private
FFilepath: string;
FStringList: TStringList;
FFreceiverFormHandle: HWND;
public
constructor Create(AStrings: TStrings; AFilepath: string; AReceiverFormHandle: HWND);
destructor Destroy; override;
end;
constructor TFileExplorer.Create(AStrings: TStrings; AFilepath: string; AReceiverFormHandle: HWND);
begin
inherited Create(False);
FStringList := TStringList.Create;
FStringList.Assign(AStrings);
FFilepath := AFilepath;
FFReceiverFormHandle := AReceiverFormHandle;
end;
destructor TFileExplorer.Destroy;
begin
FStringList.Free;
inherited;
end;
"Start" ist nicht erforderlich, wenn man "CreateSuspended" auf False setzt.
Der Thread wird automatisch gestartet, wenn der Constructor beendet ist.