Hi nochmal:
Hier das command-Pattern, was ich im Kopf hatte,
ist jedoch vom Prinzip her das gleich wie deins:
Delphi-Quellcode:
{ Hier ein Beispiel-Command }
TSaveImageCommand = class(TCommand)
private
FFilename: string;
protected
public
constructor Create(const AFilename: string); reintroduce; overload;
procedure Execute; override;
end;
TCommand = class
protected
FCaption: string;
FOnCommandProgress: TOnCommandProgress;
procedure CommandProgress(ACommand: TCommand);
public
Constructor Create; virtual;
procedure Execute; virtual;
property Caption: string read FCaption;
property OnCommandProgress: TOnCommandProgress read FOnCommandProgress write FOnCommandProgress;
end;
Im Thread würde ich nun das Event des Commands umleiten,
so dass es erst den Thread informiert und nicht einfach
bis zur Hauptanwendung durchschlägt, wo es ja nicht synchronisiert
wäre.
Wenn das Event dann den Thread erreicht hat, würde ich einfach
ein Event des Threads auslösen, welches das aktuelle TCommand
übergibt.
Wenn du dann das Event in deiner Anwendung auswerten willst,
kannst du ja das übergebene TCommand-Objekt holen und die
gewünschte Eigenschaft auslesen.
Soweit meine Gedanken hierzu...
Gruß
Pfoto