Schnell zusammengetippt, kann noch Fehler enthalten:
Delphi-Quellcode:
type
TOnSomethingHappenedEvent = procedure(var OldValue: string; const NewValue: string) of object;
TMyThread = class(TThread)
private
FText: string;
FOnSomethingHappened: TOnSomethingHappenedEvent;
procedure DoOnSomethingHappened;
...
public
...
property OnSomethingHappened: TOnSomethingHappenedEvent read FOnSomethingHappened write FOnSomethingHappened;
end;
procedure TMyThread.DoOnSomethingHappened;
var
OldValue: string;
begin
if Assigned(FOnSomethingHappened) then
begin
FOnSomethingHappened(OldValue, FText);
Log('Changed from ' + OldValue + ' to ' + FText);
end;
end;
procedure TMyThread.Execute;
begin
...
Synchronize(DoOnSomethingHappened);
end;
Nun kannst Du dem Thread eine Methode vom Typ TOnSomethingHappenedEvent als Eventhandler für OnSomethingHappened zuweisen, der dann synchronisiert ausgeführt wird. Allerdings musst Du den Thread nun Suspended erzeugen, damit er nicht gleich losrennt, bevor die Property belegt wurde.
Aber das wird auch nichts an der Tatsache ändern, dass das Label nicht updatet
@Medium daran liegt es nicht hab, dass updaten klappt auch wenn das Thread leer ist nicht
Mit der Form stimmt etwas nicht