Du musst den Thread im 'suspended' Modus starten, sonst springt er nach dem Create u.U. gleich in die Execute-Methode.
Delphi-Quellcode:
Constructor TMyThread.Create;
Begin
Inherited Create (True); // stay asleep
fLocalStuff := TLocalStuff.Create; // create local stuff
Resume; // go!
End;
Dein Problem liegt vermutlich woanders, denn mit der Threadgeschichte ist alles ok. Auch wenn dein Create funktioniert, würde ich es trotzdem noch so wie von mir vorgeschlagen abändern, einfach weil es schöner ist.
Es ist zwar unschön, aber Du kannst spaßeshalber deine Liste auch in der Execute-Methode instantiieren, da dieser code im Thread läuft, das CREATE aber noch nicht.
Wo genau tritt der Fehler denn auf? Im Threadkonstruktor, oder der Execute-Methode? Greifst Du von außen auf die Liste zu? Wenn ja, wie?