Einzelnen Beitrag anzeigen

MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#1

TThread.WaitFor verursacht einfrieren des Programmes

  Alt 29. Mär 2008, 14:57
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
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat