Einzelnen Beitrag anzeigen

Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#4

Re: TThread abfragen, ob beendet

  Alt 23. Mai 2006, 05:25
Hi Christian,

In solch einem Fall würde ich entweder beim Beenden des Programms den Thread Beenden oder falls das nicht geht wiefolgt vorgehen:

Delphi-Quellcode:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := FALSE;

  {Form1.}Caption := 'Programm wird beendet, bitte warten...';

  While not MyThread.Terminated do
    Application.ProcessMessages;


  CanClose := TRUE;
end;
Der Nachteil wird sein das zB. beim Beenden von Windows dein Programm das herunterfahren verhindert.
Desswegen müsste man es noch erweitern:

Delphi-Quellcode:
type
  //...
  private
    { Private-Deklarationen }
     procedure WMQueryEndSession(var Msg: TWMQueryEndSession); message WM_QUERYENDSESSION;
  public
    { Public-Deklarationen }
  end;

//...

procedure TForm1.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin
  MyThread.Terminate;
  Msg.Result := 1; // 1- beenden erlaubt / 0 - nicht erlaubt
end;

Gruss
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat