Hallo,
da ich hier nicht mehr weiterkomme, wende ich mich einmal an das Forum:
Ich möchte mit urlDownloadToFile Dateien herunterladen, allerdings hängt sich die Routine auf, sobald die Verbindung abbricht (z.B. weil gerade routinemäßig die dynamische
IP vom Provider gewechselt wird). Aus Gründen der Benutzerfreundlichkeit habe ich den Download schon einmal in einen eigenen Thread ausgelagert.
Mit folgenden Ansätzen gab es bis jetzt leider kein weiterkommen:
Der Download kann nicht abgebrochen werden, weil dies über den Rückgabewert der Methode .OnProgress geschehen muss, die ab und an von urlDownloadToFile aufgerufen wird. Sobald die Verbindung aber abbricht, wird die Methode auch nicht mehr aufgerufen, sodass ein normaler Abbruch nicht mehr möglich ist.
Den Download-Thread ordnungsgemäß mit Thread.Terminate; Thread.Free; zu beenden funktioniert auch nicht, so sich ja urlDownloadToFile und damit auch der Thread aufgehängt hat.
Es bleibt nur noch den Thread gewaltsam mit TerminateThread (Thread.Handle,Thread.ThreadID); ThreadFree; abzuwürgen, da aber nicht alles ordnungsgemäß beendet wird, funktioniert ein erneuter Downloadversuch mit urlDownloadToFile danach nicht mehr richtig. Wie ich inzwischen herausgefunden habe, liegt dies daran, dass nach dem "Abschuss" des Download-Threads auf die halbfertige Datei auf der Festplatte immer noch zugegriffen wird. Bei einem erneuten Download-Versuch müsste die Datei dann also unter einem anderen Namen gespeichert und die halbfertige Dateileiche liegengelassen werden, was aber sehr unsauber wäre.
Grüße,
Mendelsohn