Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.032 Beiträge
 
Delphi 12 Athens
 
#4

Re: AThread.WaitFor gibt Fehler "Das Thread Handle ist

  Alt 23. Okt 2009, 12:21
Zitat von BlueStarHH:
Wie bekomme ich also beides (Beenden per Klick und automatisch freigeben) unter einem Hut?
Klaus hat ja schon erklärt, warum der Fehler auftaucht: du wartest auf einen Thread, der sich beim Beenden selbst frei gibt. Das kann leicht schief gehen.

Eine Möglichkeit ist, beim Button-Click ein Flag zu setzen und den Code, der nach Beenden des Threads ausgeführt werden soll, im MyThreadTerminate aufzurufen.

Delphi-Quellcode:
procedure TForm1.MyThreadTerminate(Sender: TObject);
begin
  AThread := nil;
  if FlagDoSomeCode then begin
    FlagDoSomeCode := false;
    DoSomeCode;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if Assigned(AThread) then
  begin
    FlagDoSomeCode := true;
    AThread.Terminate;
  end
  else begin
    DoSomeCode;
  end;
end;
Uwe Raabe
  Mit Zitat antworten Zitat