Deswegen sollst du ja auch nil als Parameter übergeben. Dann überlebt das Queue auch das Ende des Threads. Die übergebene Methode ist ja eine Anonyme Methode. Obwohl sie in deiner Thread-Methode deklariert wird, gehört sie damit nicht wirklich zu der Thread-Instanz.
Ok, also doch als anonyme Methode. Etwa so?
Delphi-Quellcode:
TThread.Queue(nil, procedure()
begin
MachWas;
end);
Was ich gemeint habe, ist dass die Methode nicht als Teil des Threads deklariert werden darf:
Delphi-Quellcode:
type
TMeinThread = class(TThread)
//...
protected
procedure Execute; override;
procedure DoDataChanged;
end;
procedure TMeinThread.Execute;
begin
//..
TThread.Queue(nil, DoDataChanged);
end;
procedure TMeinThread.DoDataChanged;
begin
myCustomDataSource.DataChanged;
end;