Ich möchte eine Datei aus dem Internet herunterladen und ich stelle mir vor, dies sollte eine einfache Aufgabe sein. Bei mehreren verschiedenen Ansätzen habe ich festgestellt, dass jeder seinen eigenen Nachteil hat. Die wichtigsten Punkte sind:Die Verbindung nicht Timeout bei der Verwendung von Indy
- Anwendung friert, bis er die Datei
- Anwendung Downloads friert immer wenn die Internetverbindung verloren/Server reagiert nicht.
(Details:
How to retrieve a file from Internet via HTTP?
The connection does not timeout while downloading file from internet)
So, endlich habe ich die Vorschläge, die ich von mehreren Leuten bekam "pro" Bibliotheken wie Indy zu verwenden. Allerdings ist Indy nicht viel besser als die Code-Teile, die ich ausprobiert habe (aber es ist viel größer und schwieriger zu warten). Bei der Verwendung von Indy friert die Anwendung nicht nur für kurze Zeit ein, so dass sie immer noch (irgendwie) verwendbar ist. Die Anwendung kann jedoch nicht heruntergefahren werden, bis der Download abgeschlossen ist (niemals, wenn die Internetverbindung unterbrochen wird).
Andere Leute berichteten das gleiche Problem: http://borland.newsgroups.archived.at/public.delphi.internet.winsock/200609/0609079112.html
https://forums.embarcadero.com/thread.jspa?threadID=25199&tstart=90
So gibt es einige Hacken ich tun musste, um TIDAntiFreeze, damit es funktioniert?
Auch die ConnectTimeout-Eigenschaft wird nicht erkannt.
fIDHTTP := TIDHTTP.Create(NIL);
fIDHTTP.ConnectTimeout:=5000;
Soll mir fallen Indy und zurück zur ursprünglichen Idee, die Datei in einem separaten Thread der Herunterladen und das Fadenende, wenn er nicht reagiert (dest auf diese Weise, die ich von 3rd-Party-Bibliotheken loswerden)? Wird es unvorhergesehene Nebenwirkungen geben, wenn ich das tue?
Verwendung: Delphi 7, Indy
10.1.5
10.5 (wahrscheinlich).
Dank
Haben Sie versucht, einen Thread zum Herunterladen der Datei im Hintergrund zu verwenden? – mjn
Indy 10.1.5 ist sehr alt, aktuell ist 10.5.7 – mjn
Die neue Version von Indy weigert sich, in meinem Computer zu installieren. – Ampere