Moin,
ich nutze die
Unit UDownThread aus
diesem Beitrag um eine Datei herunter zu laden, dies klappt auch super.
Ich möchte dies in einem thread tun, da mir das Programm ansonsten hin und wieder trotz Application.ProzessMessages und TidAntiFreeze für kurze Zeit einfriert, bzw. die Oberfläche nicht neu gezeichnet wird, nachdem sie durch andere Fenster (bsp. Explorer) verdeckt wurde.
Nun möchte ich mehrere Dateien nacheinander nicht parallel! herunterladen, und dachte mir, ich könnte mit WaitFor einfach warten, bis der vorherige Download abgeschlossen ist, aber nun friert mir das Programm bei WaitFor immer komplett ein. Die Datei (welche nur ein paar Kilobyte groß ist) wird nicht heruntergeladen und das Programm erwacht auch nicht mehr.
Delphi-Quellcode:
procedure TForm1.MyDownloadTest(DownFiles, FileNames: TStrings);
var
i: integer;
Down: TDownThread;
begin
for i := 0
to DownFiles.Count-1
do
begin
Down := TDownThread.Create(true);
with Down
do
begin
FreeOnTerminate := true;
OnWork := OnThreadWork;
OnWorkBegin := OnThreadWorkBegin;
URL := DownFiles[i];
FileName := FileNames[i];
WaitFor;
end;
end;
end;
Hab ich einen Denkfehler in meinem Code, oder muss ich um WaitFor benutzen zu können, etwas an der DownThread-Klasse ändern ?
Grüße
Christian