Forum: Programmieren allgemein
by shebang,
8. Jan 2021
Stimmt, der Task müsste selbst unterscheiden, ob er durch den Button oder über das Schließen der Form beendet wurde. Nur im ersten Fall ist eine weitere Synchronisation notwendig.
Forum: Programmieren allgemein
by shebang,
8. Jan 2021
Einem Thread kann ich (über Terminate) mitteilen, dass er sich beenden soll und dann darauf warten, bis er sich selbst beendet hat. Bei einem Task scheint das nicht vorgesehen zu sein.
Forum: Programmieren allgemein
by shebang,
8. Jan 2021
Dann wäre die Frage, ob ein Task für deine aktuelle Aufgabe geeignet ist. Wenn ich mir die verfügbaren Methoden von TTask so anschaue, dann sieht es für mich eher so aus, dass Tasks für kurze kleine Aufgaben gedacht sind, auf deren Erfüllung man wartet. Dein Beispiel enthält ja eine Schleife, die abgebrochen werden muss, es gibt kein reguläres Ende. Ich würde an dieser Stelle wohl eher einen...
Forum: Programmieren allgemein
by shebang,
8. Jan 2021
Damit funktioniert es bei mir:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Assigned(fTask) then begin
fTask.Cancel;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin