Bei Queue/ForceQueue mußt du nur aufpassen, wenn du übergreifende Variablen verwendest, dass deren Inhalt (Objekte, Zeiger und bedingt auch dynamische Arrays) zur Ausführungszeit noch vorhanden ist. (oder für den Aufruf vorher kopiert werden)
Dankesehr für den Hinweis, himitsu.
Das ist richtig, und das mache ich standardmässig so nach dem Schema wie unten,
und kopiere mir die Variablen lokal, mit dem gleichen Namen, nur mit "A" und "L" unterschiedlich benannt.
Delphi-Quellcode:
procedure TForm.PressIt( AParam : TMyParameter );
var
LParam : TMyParameter;
begin
LParam := AParm;
TThread.ForceQueue(nil,
procedure
begin
TDialogService.ShowMessage( LParam.Message );
end );
end;
Mit dieser Konfiguration gab es noch nie Probleme (Toi, Toi, Toi),
und ich kann das nur empfehlen