Guten Morgen,
ich habe zwei TTasks in meinem Programm.
Wird das Programm beendet laufen die Tasks weiter.
Gibt es noch eine andere Möglichkeit als einen Task mit Cancel zu beenden.
Wird cancel ausgeführt, ist der Task anschliessend nil - die Routine läuft aber weiter.
Hat wer eine Idee dazu?
Delphi-Quellcode:
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
taskA: ITask;
taskB: ITask;
procedure A;
procedure B;
public
{ Public declarations }
end;
//-------------
procedure TForm1.A;
begin
while true do
begin
sleep(10);
end;
end;
procedure TForm1.B;
var
i: Cardinal;
begin
while not TThread.CurrentThread.CheckTerminated do
begin
sleep(50);
inc(i);
TThread.Queue(TThread.CurrentThread, procedure
begin
edit1.Text := format('%d %d',[integer(TThread.CurrentThread), i]);
end);
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
taskA.Cancel;
taskB.Cancel;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
taskA := TTask.Create(procedure
begin
A;
end);
taskA.Start;
taskB := TTask.Create(procedure
begin
B;
end);
taskB.Start;
end;
Grüße und bleibt gesund
Klaus