TL;DR;
Delphi-Quellcode:
procedure TTestThread.Execute;
begin
Synchronize(DoTest);
end;
Das macht nicht so viel Sinn, denn damit läuft ja dein zu "threadender" Code wieder im Main UI-Thread, wenn ich das richtig interpretiere.
Es sollte doch nur das Ergebnis synchronisiert werden.