Hi,
du könntest auch einen lokalen Recordtyp definieren und über einen Callback/Event die Werte per Record übergeben.
Dann rufst Du im Thread-Context eine Prozedur mit Synchronize(MyProc) auf, die den Record befüllt und die Eventmethode startet.
z.B.
Delphi-Quellcode:
type
TMeinStatus = record
Message: WideString;
ErrorCode: Integer;
end;
TMeinStatusEvent = procedure(Status: TMeinStatus) of object;
...
TMeinThread = class(TThread)
private
FStatus: TMeinStatus;
FOnStatus: TMeinStatusEvent;
...
protected
procedure SetStatus;
public
property OnStatus: TMeinStatus read FOnStatus write FOnStatus;
end;
...
procedure TMeinThread.SetStatus;
begin
if Assigned(OnStatus) do
FOnStatus(FStatus);
end;
...
procedure TMeinThread.Execute;
begin
...
FStatus.Message := 'test';
FStatus.ErrorCode := 0;
Synchronize(SetStatus);
...
end;
Dann eine Procedur im
VCL-Threadcontext erstellen, die als OnStatus-Event fungiert. Event zuweisen und lüppt. Prinzip verstanden?
Gruß Assertor