Forum: Programmieren allgemein
by Smiley,
6. Sep 2019
Die Antwort auf meine Frage TTask.WaitForAll wird in dem Kurs von Olaf Monien sehr gut erklärt:
Delphi CE Bootcamp 2018 Week 7 - Threading and Performance Tuning with Olaf Monien
Part 3
etwa bei 40 bis 47 Minuten
dort wird auch der Sinn dieses Befehls erklärt, in bestimmten Situationen.
Das war die Antwort die ich finden wollte.
Forum: Programmieren allgemein
by Smiley,
27. Aug 2019
Ich habe jetzt mal eine Schoko-Version erstellt und angepasst nach der Vorgabe von Schokohase.
Das ganze funktioniert grob ganz gut mit der Ausnahme, dass die Dateien im ersten (ausgewählten) Verzeichnis nicht angezeigt werden.
Weiterhin wird im ListView nur der komplette Dateiname mit Pfad angezeigt und nicht einzeln, wie die ListView1Data Routine vermuten lässt.
Außerdem verstehe ich noch...
Forum: Programmieren allgemein
by Smiley,
25. Aug 2019
Das "FFiles: TList<string>;" habe ich mir mal nachgeschlagen, ist eine TList Klasse, damit habe ich bisher nicht gearbeitet, scheint sehr nützlich zu sein.
Ist das von der Geschwindigkeit nur unbedeutend langsamer als eine Striglist oder DynArray ?
Wenn ich es richtig verstehe wird mit jedem Verzeichnis die TList erweitert und enthält am Ende alle Files mit Verzeichnisname ?
In...
Forum: Programmieren allgemein
by Smiley,
24. Aug 2019
Hier die DirList Routine.
Wenn nur ein Task läuft, wo soll dann ein Deadlock eintreten ???
Das WaitForAll wird in dem Beispiel von Embarcadero verwendet und ich wollte es benutzen um nicht mit einem eigene Flag arbeiten zu müssen.
Kann ich dann mal ein Beispiel mit EndMessage sehen ?
// *****************************************************************************
procedure...
Forum: Programmieren allgemein
by Smiley,
24. Aug 2019
Nein, wenn ich das WaitForAll weglasse funktioniert alles problemlos.
Forum: Programmieren allgemein
by Smiley,
24. Aug 2019
Habe mir jetzt alle Videos angesehen,
Das zeite Video von Olaf Monien https://youtu.be/Jhcpgjs1uPA ist das Beste für meine Zwecke um mit TTask zu arbeiten.
Das dritte von Daniel Wolf ist auch sehr gut (kannte ich schon) beschreibt aber mehr nur die Problematik Synchronisierung und der Deadlock vermeidung.
Danke Stahli für die Links
Ich weiß zwar noch nicht warum das mit dem WaitforAll...
Forum: Programmieren allgemein
by Smiley,
24. Aug 2019
procedure TForm1.Button1Click(Sender: TObject);
var
lstatus: boolean;
begin
lStatus:=False;
LTaskRun := true;
Setlength(tasks, 1);
Button1.enabled:=False;
Forum: Programmieren allgemein
by Smiley,
24. Aug 2019
Zum showmessage komme ich nicht, da er ja in waitforall hängen bleibt.
Man könnte hier zu beginn von der Clickroutine den Butto auf disabled stellen und nach waitforall auf enabled, dann erkennt man einen Sinn in der Abfrage
Forum: Programmieren allgemein
by Smiley,
24. Aug 2019
Das ist schon klar Schokohase, dafür war es auch gedacht, das Repeat habe ich lediglich nicht gelöscht, aber dorthin komme ich ja nie, genau das ist ja das Problem.
Das WaitForAll wartet eben unendlich, auch wenn der Task lange abgelaufen ist, zum Reppeat komme ich ja gar nicht.
Danke Stahli für die Links, das erste Video von Bernd Ua kannte ich noch nicht, das ist ganz gut.
Das von Daniel...
Forum: Programmieren allgemein
by Smiley,
24. Aug 2019
Weil ich wissen will wann der Task beendet ist.
Besser wäre es natürlich ich bekäme einen event der mir sagt, dass der Task fertig ist.
Das ist aber erst der nächste Schritt.
wie das geht habe ich noch nicht gefunden.
Forum: Programmieren allgemein
by Smiley,
24. Aug 2019
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...