Bei einer Funktion/Methode garnicht, da ist es genau so, wie es schon seit Jahrzehnten für Synchronize in allen Beispielen gezeigt wird.
"globale" variablen
Aber bei einer anonymen Methode kann man einfach Variablen durchreichen.
Delphi-Quellcode:
procedure Test;
var
S: string; // diese lokale Variable wird von Delphi in ein Interface verpackt und alle Prozeduren nutzen eine Referenz darauf
begin
S := 'Hallo Welt';
TThread.Syncronize(nil, procedure
begin
S := S + '!';
end);
TThread.Queue(nil, procedure
begin
ShowMessage(S);
end);
end;
Hier wäre es zu praktich, wenn man Queue/Syncronize einen Data-Parameter mitgeben könnte, so wie man es von anderen "Callbacks" kennt, was es hier aber nicht gibt.