Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#5

AW: Methode "Modal" aufrufen mit TThreads?

  Alt 10. Nov 2021, 22:32
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!
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat