WebClient DownloadProgress Status Problem

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von IchHeisseFelix.

    WebClient DownloadProgress Status Problem

    Hi,

    ich habe schon einmal einen Code verwendet um eine .exe Datei von meinem 1&1 Server zu downloaden. Nun habe ich diesen verwendet um eine .zip Datei zu downloaden.
    Der Download finktioniert nun gut und ohne fehler aber die Progressbar und das Label die den Fortschritt anzeigen sollen reagierne nun erst nach beendigung des Downloads.
    Ich kann trotz 3 Tägiger Google Suche den Fehler nicht finden und bin wirklich verzweifelt. Bitte helft mir.

    Code

    VB.NET-Quellcode

    1. Imports Microsoft.Win32
    2. Imports System.Net
    3. Imports System.IO
    4. Imports System.IO.Compression
    5. Imports Ionic.Zip
    6. Public Class Form1
    7. Dim WithEvents WC As New WebClient
    8. Public str_desktop As String = My.Computer.FileSystem.SpecialDirectories.Desktop
    9. Public str_version As String = WC.DownloadString("http://###/version.txt")
    10. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    11. txt_status.Text = "Bereit Version " & str_version & " zu installieren"
    12. End Sub
    13. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    14. Me.Close()
    15. End Sub
    16. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    17. If IO.File.Exists(str_desktop & "\***.exe") Then
    18. IO.File.Delete(str_desktop & "\****.exe")
    19. ListBox1.Items.Add("Alte Datei gelöscht ... ")
    20. ListBox1.Items.Add("Download Update gestartet ... ")
    21. WC.DownloadFileAsync(New Uri("http://###/_update_" & str_version & ".zip"), str_desktop & "\_" & str_version & ".zip")
    22. Else
    23. MsgBox("*** nicht auf Desktop gefunden!" & vbCrLf & "Bitte ### informieren", MsgBoxStyle.Critical, "Fehler")
    24. Me.Close()
    25. Exit Sub
    26. End If
    27. End Sub
    28. Private Sub WC_DownloadFileCompleted(sender As Object, e As System.ComponentModel.AsyncCompletedEventArgs) Handles WC.DownloadFileCompleted
    29. zip_entpacken()
    30. End Sub
    31. Private Sub WC_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles WC.DownloadProgressChanged
    32. 'ProgressBar1.Maximum = e.TotalBytesToReceive
    33. ListBox1.Items.Add("Download läuft ... ")
    34. ProgressBar1.Value = e.ProgressPercentage
    35. txt_status.Text = (e.BytesReceived / 1000000).ToString("N2") & " MB / " & (e.TotalBytesToReceive / 1000000).ToString("N2") & " MB"
    36. End Sub
    37. Private Sub zip_entpacken()
    38. Using zip As ZipFile = ZipFile.Read(str_desktop & "\***_update_" & str_version & ".zip")
    39. ListBox1.Items.Add("Entpacke Update Datei ... ")
    40. zip.ExtractAll(str_desktop, ExtractExistingFileAction.OverwriteSilently)
    41. Threading.Thread.EndCriticalRegion()
    42. System.IO.File.Delete(str_desktop & "\_update_" & str_version & ".zip")
    43. End Using
    44. MsgBox("Update erfolgreich abgeschlossen", vbInformation, "Update V " & str_version)
    45. ' Me.Close()
    46. End Sub


    Mit einer .exe Datei hat alles vorher super funktioniert.
    Bestimmt habe ich einen ganz doofen Fehler gemacht.
    Für jede Hilfe bin ich sehr sehr Dankbar!!!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „AbsolutCF“ ()

    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    AbsolutCF schrieb:

    trotzdem habe ich keine Lösung für mein Problem.
    Das stimmt begrenzt. Aber über diese Grundlagen muss man sich Gedanken machen, weil die Basis bereits stimmen muss. Ansonsten muss die Architektur neu hochgezogen werden.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Es tut mir leid, aber ich versteh das Problem immer noch nicht. Ich habe vorher mit dem selben Code eine .exe Datei heruntergeladen und nun eine .zip Datei. Bei der .exe hat die Progressbar ordentlich jeden Fortschritt angezeigt. Nun wird die Progressbar esrt nach dem download auf einmal gefüllt.
    Kann das an der gepackten Datei liegen?

    *EDIT
    Hab es gerade mit einer größeren Datei probiert und funktioniert tadellos. Lag an der geringen Größe.
    Trotzdem Danke für den Hinweis auf die Sicherheit. Werde mir das nochmal genauer anschauen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „AbsolutCF“ ()

    Das liegt daran, dass du einen eigenen, und zudem unsicheren Updater verwendest.

    Nein, es liegt nicht daran, aber das ist trotzdem ein Problem. Schau dir den Link von Trade doch mal an, hast du scheinbar noch nicht getan.
    Und wenn du ein vernünftiges(!) Update-Tool suchst: Klick

    Grüße
    Grüße
    Felix