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