AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TTask.WaitForAll hängt

Ein Thema von Smiley · begonnen am 24. Aug 2019 · letzter Beitrag vom 31. Okt 2022
 
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#1

TTask.WaitForAll hängt

  Alt 24. Aug 2019, 17:19
Ich versuche mein Mainform beweglich zu halten, nachdem ich ein Programm starte, das sehr lange zum fertigstellen braucht.
Daher habe ich das Programm in einem TTask in den Hintergrund geschickt.
Das Problem ist nur, dass ich abfragen muss, wann der Prozess beendet ist.
Es wird immer wieder beschrieben, dass man mit WaitFoAll auf die Beendigung aller Tasks warten kann.
Das funktioniert bei mir aber nicht, er bleibt in der WaitForAll Abfrage für immer stecken.
Daher habe ich es mit einer separaten Variable gemacht um die Beendigung abzufragen, das funktioniert auch.

Aber warum funktioniert das WaitForAll bzw. WaitForAny nicht, das ist dafür doch gedacht ???

Hier mein Code:
Delphi-Quellcode:
  Verz: String;
  j, AktLine: Integer;
  StartFolder, ProgPath: String;
  StartTime: TTime;
  LTaskRun: boolean;
  tasks: array of ITask;

implementation

{$R *.dfm}

// *****************************************************************************
procedure TForm1.Button1Click(Sender: TObject);
var
  lstatus: boolean;

begin
  lStatus:=False;
  LTaskRun := true;
  Setlength(tasks, 1);

  tasks[0] := TTask.Create(
    procedure
    begin
      DirList;
    end);
  tasks[0].Start;

  lstatus := TTask.WaitForAll(tasks);
  ShowMessage('Nach WaitAll');

  repeat
    application.ProcessMessages;
  until not LTaskRun;

end;
Wenn ich das WaitforAll rausnehme funktioniert alles wie gewünscht.
Einen 2ten Task aufmachen versuche ich erst wenn ich es mit einem vernüftig hinbekommen habe.
Dann kommt auch noch das Sychronize mit rein.
Ein Schritt nach dem anderen.
Wärend im Hintergrund eine Liste in einem Grid eingfügt wird oder in eine DB, soll das Hauptfenster nicht "Programm ausgelastet" anzeigen und noch verschiebbar sein.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz