Aber das Programm wartet überhaupt nicht.
Dann schauen wir halt mal auf deinen Code.
Delphi-Quellcode:
procedure TCallThread.Execute;
var
tmpTask: ITask;
begin
inherited;
try
tmpTask := TTask.Create(
procedure
begin
Anruf(CallData);
while not AnrufFertig
do
tmpTask.Wait();
WaitFor();
end
);
tmpTask.Start;
except
on e:
Exception do
ShowMessage(e.
Message);
end;
end;
Das Execute des Threads erzeugt also eine Task (Inhalt erstmal egal) und startet diese. Die Task wird in einem separaten Thread ausgeführt. Also ist die Execute-Methode damit beendet und wird verlassen. Der Code in der Task wird dann zwar noch in dem anderen Thread ausgeführt, aber der TAnrufThread wird wegen FreeOnTerminate nach dem Verlassen von Execute schon freigegeben.
Daher auch meine Frage
warum die Kombination aus Thread und Task?
Entweder das eine oder das andere, aber nicht beides!