Einzelnen Beitrag anzeigen

choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#6

Re: Inztanz macht neue Instanz der gleichen Klasse

  Alt 20. Nov 2003, 17:20
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?
gruß, choose
  Mit Zitat antworten Zitat