Entschuldige, dass ich es nicht vorher gesehen habe: Es sollte vermieden werden,
Free oder
Destroy innerhalb des Konstruktors (oder einer von ihm aufgerufenen Methode) zu verwenden. Wenn Du wirklich willst, das ein Objekt beim Erstellen freigegeben wird, wirf innerhalb des Konstruktors eine
Exception, vor allem aber: Finde eine andere Lösung!
Ein Ansatz mit Threads hingegen könnte so aussehen:
Delphi-Quellcode:
type
TMyObject = class(TThread)
private
FHandle: Cardinal;
FCount: Integer;
protected
procedure Execute; override;
public
constructor Create(const AHandle: Cardinal; const ACount: Integer);
end;
constructor TMyObject.Create(const AHandle: Cardinal;
const ACount: Integer);
begin
inherited Create(True);
FHandle:= AHandle;
FCount:= ACount;
FreeOnTerminate:= True;
Resume;
end;
procedure TMyObject.Execute;
begin
if not Terminated then
begin
if FCount<100 then
TMyObject.Create(FHandle, FCount+1);
//cannot post message WM_CreateDestroy: Not defined
end;
end;
Bitte überlege Dir genau, was Du machst. Vielleicht solltest Du in einem neue
DP-Thread das Problem und eine mögliche Herangehensweise diskutieren?