Frage

Hier ist mein App-Status:

Zweck - Download mehr Listen Dateien aus dem Internet Approach - ein einfaches „Download-Formular“ erstellt. Nach einer Weile, ich brauchte nur mehr Formen, weil ich mehr als eine Liste von Dateien hatte zum Download bereit. Nur gelöst, dass ein MDIForm mein Projekt durch Hinzufügen einer Schaltfläche fügen Sie eine weitere „Download-Formular“ Instanz und voilà zu erstellen. Offenbar war mein Problem gelöst. Aber nein: (

Wenn ich drücke meine Schaltfläche „Download“ in meiner Form-instance3, die anderen Formularinstanzen (2 und 1) hängt an den Inhalt herunterzuladen (ich ein Timeout manchmal bekommen), bis die Form-instance3 beendet alle Downloads und so weiter , für alle anderen Formen. Also, auch wenn ich weiß, dass meine App nicht multi-threaded ist, die mehrere Instanzen der gleichen Form in Konflikt (Inet Komponente, vermutlich) und ich kann nicht mehrere Dateien gleichzeitig herunterladen. Inet und meine Download-Funktion in Form definiert ist.

Was kann ich tun, dieses Problem zu lösen? wie kann ich mehrere Dateien gleichzeitig herunterladen?

Vielen Dank

edit:

Ich versuche, die „wqw“ Vorschlag zu verwenden, aber ich bin vor einige Probleme: Im download_form habe ich eine MSHFlexGrid, mit 2 Spalten: einem mit der URL und der andere mit dem Datei Schicksal. Ich habe alle Zeilen iterieren Wurf, um die Dateien herunterladen und speichern. Mit dem Ansatz von „wqw“ vorgeschlagen, wie kann ich jeden Download unterscheiden, so dass ich es sparen mit den richtig im Raster angegebenen Namen?

War es hilfreich?

Lösung

Was tun Sie für den aktuellen HTTP-Download? Ich würde versuchen, Einfache Asynchronous Downloads und vergessen Sie die MDIForm. Wirklich!

Andere Tipps

VB6, auf seinem eigenen, ist single threaded. So zu verschiedenen Formen Herunterladen Ausbrechen wird dir nicht helfen.

Was ich in der Vergangenheit verwendet wird, ist das Timer-Objekt in Verbindung mit einem ActiveX EXE . Dieser Ansatz gibt Ihnen eine Möglichkeit, alle das Herunterladen Logik an einem Ort zu lokalisieren, steuert es, wie Sie ein regelmäßiges Objekt steuern und haben es in einem separaten EXE, also standardmäßig ausgeführt es multi-threaded zu machen.

So ist die Art und Weise dies funktioniert, ist wie folgt:

  1. Sie rufen die Download-Methode auf dem ActiveX-EXE-Objekt
  2. Im Download-Methode instanziert den Timer und haben es fast sofort beginnen.
  3. Sie erhalten die Download-Methode aus, damit die Kontrolle gibt das Unternehmen zurück, die sie aufgerufen.
  4. Dann kommunizieren Sie zurück zum Haupt App über Ereignisse (z DownloadProgress oder download, etc ...)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top