Progressbar lädt nicht richtig.

  • VBScript

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von XnoiseX.

    Progressbar lädt nicht richtig.

    Hallo Leute,

    Ich wollte eine Progressbar in meinem Programm reinmachen um zu kontrollieren ob der download auch funktioniert...aber erst nachdem die Datei runtergeladen wurde läuft es durch...

    Hier der Code :

    VB.NET-Quellcode

    1. Imports System.Net
    2. Public WithEvents downloader As WebClient
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. downloader = New WebClient
    5. downloader.DownloadFileAsync(New Uri(" ftp server"), TextBox2.Text & "\blablabla.zip")
    6. Me.Button1.Enabled = False
    7. End Sub
    8. Private Sub downloader_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles downloader.DownloadFileCompleted
    9. MsgBox("Download abgeschlossen!", MsgBoxStyle.Information, "Fertig")
    10. Me.ProgressBar1.Value = 0
    11. Me.GG.Text = "FERTIG"
    12. Me.Label5.Text = "0 %"
    13. Me.Button1.Enabled = True
    14. Process.Start(TextBox2.Text)
    15. End Sub
    16. Private Sub downloader_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles downloader.DownloadProgressChanged
    17. ProgressBar1.Value = e.ProgressPercentage
    18. GG.Text = e.BytesReceived / 1024 / 1024 / 1024
    19. Label5.Text = e.ProgressPercentage
    20. End Sub


    PS : Die Datei ist ca 12 GB groß ^^ Ich glaube aber nicht, dass es daran liegt.

    Hoffe Ihr könnt mir helfen.


    XnoiseX :saint:
    GG.Text = e.BytesReceived / 1024 / 1024 / 1024
    Das ist ein starker Indikator dafür, dass Du Option Strict auf Off hast.
    Ansonsten sehe ich an dem Code erst mal nichts grundsätzlich falsches.
    Dass Du in der Button1_Click-Methode downloader eine neue Instanz von WebClient zuweist, könnte einen unerwarteten Nebeneffekt haben. Erstelle direkt bei der Deklaration eine Instanz (also ... As New WebClient) und lass die Zuweisung in der Methode weg.
    Hast Du auch mal andere (kleinere) Dateien probiert?
    Kannst Du das Problem in einem neuen Projekt, in dem nur das nötigste drin ist, reproduzieren?
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils

    Niko Ortner schrieb:

    GG.Text = e.BytesReceived / 1024 / 1024 / 1024
    Das ist ein starker Indikator dafür, dass Du Option Strict auf Off hast.
    Ansonsten sehe ich an dem Code erst mal nichts grundsätzlich falsches.
    Dass Du in der Button1_Click-Methode downloader eine neue Instanz von WebClient zuweist, könnte einen unerwarteten Nebeneffekt haben. Erstelle direkt bei der Deklaration eine Instanz (also ... As New WebClient) und lass die Zuweisung in der Methode weg.
    Hast Du auch mal andere (kleinere) Dateien probiert?
    Kannst Du das Problem in einem neuen Projekt, in dem nur das nötigste drin ist, reproduzieren?




    also ich habs mal versucht aber es lädt einfach am Ende durch... Hier mal das wichtigste : Die Datei womit ichs getestet habe war nur 4 MB größ .__.

    VB.NET-Quellcode

    1. Imports System.Net
    2. Public Class Form1
    3. Public WithEvents downloader As New WebClient
    4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    5. downloader.DownloadFileAsync(New Uri("ftp://"), TextBox2.Text & "\test.zip")
    6. Me.Button2.Enabled = False
    7. End Sub
    8. Private Sub downloader_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles downloader.DownloadFileCompleted
    9. MsgBox("Download abgeschlossen!", MsgBoxStyle.Information, "Fertig")
    10. Me.ProgressBar1.Value = 0
    11. Me.Label2.Text = "0 %"
    12. Me.Button2.Enabled = True
    13. End Sub
    14. Private Sub downloader_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles downloader.DownloadProgressChanged
    15. ProgressBar1.Value = e.ProgressPercentage
    16. Label2.Text = e.ProgressPercentage
    17. End Sub
    18. End Class
    Definiere mal "das lädt am Ende durch"? Meinste die GUI reagiert nicht und dann is plötzlich fertig und direkt ProgressBar voll oder wie?
    Falls ja, könnte es daran liegen, dass der Download halt mit einem "Tick" durch ist (Aufgrund der Inet-Geschwindigkeit, da gibt's dann halt nicht viel ProgressChanged). Versuch mal ne größere Datei.

    Desweiteren wäre hier:
    - ist das so richtig: Button1_Click - Handles Button2.Click
    - Benutze MessageBox.Show, statt MsgBox
    - Benenne die Controls mit aussagekräftigen Namen
    - Label2.Text = e.ProgressPercentage liefert einen Integer, keinen String zurück (wie mein Vorredner schon sagte, schau mal nach Option Strict On)
    - Bezeichnung der Methoden anpassen (2 Subs mit downloader_DownloadProgressChanged)
    - mir wäre es zu aufwändig immer Me. als Prefix zu benutzen, da du doch in diesem Fall eh die Klassen-internen Controls meinst.
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Rootbob91“ ()

    Also wenn der Download abgeschlossen ist läuft die Progressbar einfach in paar Sekunden durch...
    "- ist das so richtig: Button1_Click - Handles Button2.Click" das war'n kleiner Fehler ^^' habs ja auch mit der 12 GB Datei versucht aber nope nichts passiert...
    Eig müsste es ja funktionieren...

    Rootbob91 schrieb:

    Desweiteren wäre hier:
    - ist das so richtig: Button1_Click - Handles Button2.Click
    - Benutze MessageBox.Show, statt MsgBox
    - Benenne die Controls mit aussagekräftigen Namen
    - Label2.Text = e.ProgressPercentage liefert einen Integer, keinen String zurück (wie mein Vorredner schon sagte, schau mal nach Option Strict On)
    - Bezeichnung der Methoden anpassen (2 Subs mit downloader_DownloadProgressChanged)
    - mir wäre es zu aufwändig immer Me. als Prefix zu benutzen, da du doch in diesem Fall eh die Klassen-internen Controls meinst.


    hmm...Ich habe gerade mal zum Test ein anderen Link genommen auso nicht von unseren ftp server sondern von nem Minecraft download ( einfach mal random ) und da lädt die Progressbar und auch der Prozentwert wird angezeigt...villt liegts ja am FTP ?