Frage

yeah Jungs, es ist wieder ich wieder.Ich habe folgende Code:

generasacodicetagpre.

und ich habe zwei probleme:

    .
  1. Wenn ich auf die Schaltfläche klicke, downloads Dateien, die Dateien herunterladen, aber nicht auf die HDD schreiben.Ich kann 5, 10 Minuten und nichts warten.Zu diesem Zeitpunkt wird die gesamte Datei im Programmspeicher gespeichert.Wenn ich mein Programm schließe, werden sie auf der Festplatte gespeichert.

  2. große Dateien (~ 500mb) werden überhaupt nicht gespeichert.Wenn ich mein Programm schließe, stürzt es sofort ab.

  3. Wie kann ich es bearbeiten, damit mein Programm heruntergeladene Dateien "in Echtzeit" speichert?

War es hilfreich?

Lösung

Die Nicht-Interaktivität besteht darin, dass der re->readAll() auf einem Gerät mit unbekannter Größe ein Blockierungsanruf ist.Es wird weiterlesen, bis die Anfrage abgeschlossen ist.

Das Problem mit großen Dateien hat mit dem Wachstum des Byte-Arrays mit der Datei zu tun, die die Datei enthält.Irgendwann wird Ihr Byte-Array 400MB sein, und dann muss es wachsen werden, um 2x diese Größe zu sagen, sodass Sie ~ 1 GB auf einmal in zwei großen Brocken halten müssen, und aufgrund der AdressraumfragmentierungDie Zuordnungsanforderung fehlschlägt und Ihr Programm stürzt ab.

Kleine Änderungen an Ihrem Code ergeben gewünschtes Verhalten: Sie beginnen auf einmal zu lesen und zu schreiben, und verlinken Sie einfach die beiden:

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top