Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy Download in einem extra Thread ausführen? (https://www.delphipraxis.net/10959-indy-download-einem-extra-thread-ausfuehren.html)

nomad 28. Okt 2003 17:58


Indy Download in einem extra Thread ausführen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Erstmal ein freundliches Hallo an die Community :hi:

Ich hab mir schon einige Postings und Tutorials zum Thema Threads hier angeschaut, werd aber nicht draus schlau warum ich trotzdem noch Probleme mit meinem Programm hab: Das Programm soll bei klick auf einen Button per Indy TIdHTTP.Get(url) eine recht grosse HTML Datei runterladen... ohne threading allerdings mit dem Nachteil dass das Programm bis zum Ende des Downloads nicht mehr reagiert.

Darum hab ich also versucht die Aktion über einen extra Thread auszuführen. Ich starte den Thread nun über den Buttonklick:

Delphi-Quellcode:
//unit1.pas

procedure TForm1.Button1Click(Sender: TObject);
var
  DLThread: TDLThread;
begin
  Button1.Enabled:=False;
  DLThread:=TDLThread.Create(True);
  DLThread.OnTerminate:=ThreadTerminate;
  DLThread.Resume;
  Label1.Caption := 'Status: Thread gestartet.'+#13#10+'Lade ca 1MB an Daten runter.';
end;
woraufhin auch der Thread gestartet wird:

Delphi-Quellcode:
//unit2.pas
procedure TDLThread.Execute;
begin
  Synchronize(Download);
end;

procedure TDLThread.Download;
begin
  Form1.IdHTTP1.Get('http://www.rfc-editor.org/rfc-index2.html');
end;
Das Problem bleibt allerdings immer noch bestehen, die Applikation hängt solange Indy am downladen ist...

Ich hoffe mir kann irgendjemand sagen was ich falsch mache.

Mit freundlichen Grüssen,
nomad

SirThornberry 28. Okt 2003 18:16

Re: Indy Download in einem extra Thread ausführen?
 
is klar, weil du syncronice verwendest. erzeuge am besten in deinem Thread eine neue instanz von Tidhttp

also
Delphi-Quellcode:
var http1: TIdhttp;
begin
  http1 := TIdhttp.create(keineAhnungWelcheParameter);
  http1.get(blabal...);
  http1.free;
end;

nomad 28. Okt 2003 22:34

Re: Indy Download in einem extra Thread ausführen?
 
Ja doch, das macht sinn :mrgreen:

Vielen Dank für die schnelle Hilfe, nun klappt es einwandfrei :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 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