1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

[VB2008] Bessere Downloadmöglichkeit als FileStream?

Discussion in 'Programmieren' started by d0t, Apr 23, 2009.

Thread Status:
Not open for further replies.
  1. d0t

    d0t ROM

    Moinsen Allerseits!

    Ich habe ein Problem, und zwar habe ich einen kleinen Downloader in VB geschrieben. Soweit so gut; Nur wenn ich dateien ab einer bestimmten Größe saugen will scheisst das Fenster ab, und es reagiert nicht mehr bis der DOwnload fertig ist...

    Code:
    ...
    Dim webreq As HttpWebRequest
            Dim webresp As HttpWebResponse
            Dim bReader As BinaryReader
            Dim bWriter As BinaryWriter
            Dim stream As FileStream
            Dim buffer() As Byte = New Byte(1024) {}
            Dim bytesRead As Integer
    
            ' Fortschritt zunächst auf 0% setzen
            Me.fstatus.Value = 0
            Me.fstatustext.Text = "Download"
            Me.fstatustext.Update()
    
            Try
                ' Datei-Download via HTTP "anfordern"
                webreq = HttpWebRequest.Create(sURL)
                webresp = webreq.GetResponse
    
                ' Download-Größe
                Me.fstatus.Maximum = webresp.ContentLength
                Me.fsize.Text = webresp.ContentLength & " Bytes"
                Me.fsize.Update()
    
    
                ' lokale Datei öffnen
                stream = New FileStream(strFolder & "\" & strFile, FileMode.Create)
                bReader = New BinaryReader(webresp.GetResponseStream)
                bWriter = New BinaryWriter(stream)
    
                ' Datei blockweise downloaden und lokal speichern
                Do
                    bytesRead = bReader.Read(buffer, 0, 1024)
                    bWriter.Write(buffer, 0, bytesRead)
                    fstatus.Value += bytesRead
                    fstatus.Update()
                Loop Until bytesRead = 0
    
                ' alle Dateien schließen
                bWriter.Close()
                bReader.Close()
                stream.Close()
                Me.fstatustext.Text = "Fertig"
                Me.fstatustext.Update()
                Me.flog.Text = "Der Download wurde beendet."
                Me.flog.Update()
    
            Catch ex As Exception
                ' Bei Fehler...
                Me.fstatustext.Text = "Fehler"
                Me.fstatustext.Update()
                Me.flog.Text = "Fehler: " & vbCrLf & ex.Message
            End Try
    ...
    Was kann ich machen?
    Ich kenne nur diesen Weg, und Google hat auch nichts brauchbares ausgespruckt! Vielen Dank im Voraus,

    Liebe Grüße
    d0t
     
  2. Fettbemme

    Fettbemme Halbes Megabyte

    Also bei mir haben Fenster noch nie "abgeschissen" ... :confused:

    Dein Problem ist, dass wohl während des Downloads Deine Download Funktion nicht "zurückkehrt" solange der Download nicht abgeschlossen ist. Daher ist für diesen Zeitraum die Botschaftsverarbeitung von Windows nicht mehr möglich, und Windows kann das Fenster nicht mehr neu zeichenen oder sonst irgendwie Dinge tutn.

    Lagere Dein download in einen eigenen Thread aus. Wenn Du Dein Download in einem eigenen Thread ausführst, ist dann das Handling der Botschaftsverarbeitung nicht beeinträchtigt.
     
  3. d0t

    d0t ROM

    Vielen Dank =)

    werde mal sehen was sich machen lässt ;)

    Gruß
    d0t
     
  4. AS_X

    AS_X Halbes Megabyte

Thread Status:
Not open for further replies.

Share This Page