Programm Hängt sich auf bei Download von großen Files

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Programm Hängt sich auf bei Download von großen Files

    Ok Problem ist das sich mein Programm bei dem Download bei größeren Dateien (100mb+)
    sich Aufhängt es Lädt zwar runter doch Die Form wird grau und Reagiert solange nicht mehr bis es Fertig ist

    Habe dieses hier verwendet:
    vbarchiv.net/tipps/tipp_1113.html
    Mit Verbindung eines Progressbars der mir auch nicht viel bringt wenn es sich hängt

    Hat jemand eine Lösung ?
    Backgroundworker.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Mit einem Backgroundworker kann ich nicht auf Forms zugreifen wenn ich mich Irre verbesser mich
    dann müssten sich mit Backgroundworker auch keine DLG's erstellen lassen also hier nochma der Source

    Quellcode

    1. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDownload.Click
    2. 'Download
    3. Dim dlg As New FolderBrowserDialog
    4. Dim strFile As String
    5. Dim strFolder As String
    6. ' falls keine URL angegeben, Vorgang abbrechen
    7. If Me.txtDownload.Text.Length = 0 Then Exit Sub
    8. Dim strPathParts() As String = Me.txtURL.Text.Split("/")
    9. strFile = txtmovname.Text & txtFinal.Text & ".wmv"
    10. ' Ordner-Auswahldialog anzeigen
    11. If dlg.ShowDialog Then
    12. strFolder = dlg.SelectedPath
    13. Else
    14. Exit Sub
    15. End If
    16. ' Download starten
    17. cmdDownload.Enabled = False
    18. Me.Size = New Size(268, 377)
    19. Call DownloadItem(txtDownload.Text, strFile, strFolder)
    20. Me.Size = New Size(268, 351)
    21. MsgBox("Download beendet")
    22. cmdDownload.Enabled = True



    Quellcode

    1. 'Downloader Modul
    2. Private Sub DownloadItem(ByVal sURL As String, _
    3. ByVal strFile As String, ByVal strFolder As String)
    4. Dim webreq As HttpWebRequest
    5. Dim webresp As HttpWebResponse
    6. Dim bReader As BinaryReader
    7. Dim bWriter As BinaryWriter
    8. Dim stream As FileStream
    9. Dim buffer() As Byte = New Byte(1024) {}
    10. Dim bytesRead As Integer
    11. ' Fortschritt zunächst auf 0% setzen
    12. Me.ProgressBar1.Value = 0
    13. Try
    14. ' Datei-Download via HTTP "anfordern"
    15. webreq = HttpWebRequest.Create(sURL)
    16. webresp = webreq.GetResponse
    17. ' Download-Größe
    18. Me.ProgressBar1.Maximum = webresp.ContentLength
    19. ' lokale Datei öffnen
    20. stream = New FileStream(strFolder & "\" & strFile, FileMode.Create)
    21. bReader = New BinaryReader(webresp.GetResponseStream)
    22. bWriter = New BinaryWriter(stream)
    23. ' Datei blockweise downloaden und lokal speichern
    24. Do
    25. bytesRead = bReader.Read(buffer, 0, 1024)
    26. bWriter.Write(buffer, 0, bytesRead)
    27. ProgressBar1.Value += bytesRead
    28. ProgressBar1.Update()
    29. Loop Until bytesRead = 0
    30. ' alle Dateien schließen
    31. bWriter.Close()
    32. bReader.Close()
    33. stream.Close()
    34. Catch ex As Exception
    35. ' Bei Fehler...
    36. MessageBox.Show("Fehler: " & vbCrLf & ex.Message, _
    37. "Fehler", MessageBoxButtons.OK, _
    38. MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
    39. End Try
    40. End Sub