Mir fällt da gerade ein, die Threadklasse hat doch auch die Synchronize Methode.
Das würde mir ja eigentlich schon reichen.
Nur scheint man damit keine anonyme Funktionen aufrufen zu können.
Delphi-Quellcode:
MeinString := TThread1.Synchronize(
function : String
begin
result := 'Nur ein Test';
end
);