WebClient ->ProgressChanged eArgs

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von MB-Tech.

    WebClient ->ProgressChanged eArgs

    Servus,

    ich bin gerade sehr verwundert. Wenn ich einen Asyc. Datei Upload mache und dessen Fortschritt mit Hilfe des ProgressChanged Events bzw. den eArgs anzeige,
    dann hört er bei mir immer bei 50% auf und ist dann fertig. Sprich: Er Uploadet die Datei, die Progressbar läd, aber bei 50% machts "Zack" und er ist auf 100.
    Es funktioniert alles mit dem Upload. Nur die Anzeige funktioniert nicht ordnungsgemäß. Woran liegt das? Wie behebt man dieses Problem?

    Hier der Code:

    VB.NET-Quellcode

    1. WithEvents uploader As New WebClient
    2. Sub Upload()
    3. uploader.Credentials = New NetworkCredential("user", "pw")
    4. uploader.UploadFileAsync(New Uri("ftp://server.de/bla.txt"), "bla.txt")
    5. End Sub
    6. Private Sub uploader_UploadProgressChanged(ByVal sender As Object, ByVal e As System.Net.UploadProgressChangedEventArgs) Handles uploader.UploadProgressChanged
    7. ProgressBar1.Value = e.ProgressPercentage
    8. Label1.Text = "Status: " & CStr(e.ProgressPercentage) & "%"
    9. End Sub
    10. Private Sub uploader_UploadFileCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles uploader.UploadFileCompleted
    11. MessageBox.Show("Feddisch")
    12. End Sub


    Bitte um Hilfe.
    Hm.

    Habe schon versucht einfach mal den Step auf 2 zu setzen. Bringt aber auch nichts.
    Meine andere Idee war, einfach die e.ProgressPercentage einfach mit 2 mal zu nehmen.
    Aber das geht auch nicht rund, weil er dann irgendwie an einer Stelle über 100 kommt. Kann ich mir zwar bei Max 50 nicht vorstellen, aber naja.

    Hatte auch mal zum Test die e.ProgressPercentage in eine txt schreiben lassen. Das sieht dann so aus:

    0000011111222223333...

    bis max 35.

    Irgendwie alles komisch.


    EDIT: Habe es jetzt vorerst einmal so gelöst:
    Er zählt ja immer nur im e. bis 50. Abe am Ende wenn er fertig ist geht er auf 100. Deswegen habe ich das jetzt so gelöst
    Ist irgendwie komisch, dass es nur so geht. Weil immer in 2er Schritten hoch zählen...Naja -.-

    VB.NET-Quellcode

    1. Progressbar1.Maximum = 50
    2. Private Sub uploader_UploadProgressChanged(ByVal sender As Object, ByVal e As System.Net.UploadProgressChangedEventArgs) Handles uploader.UploadProgressChanged
    3. If e.ProgressPercentage = 100 Then
    4. Progressbar1.Value = 50
    5. Else
    6. Progressbar1.Value = e.ProgressPercentage
    7. End If
    8. lb_status.Text = "Status: (" & CStr(e.ProgressPercentage * 2) & "%)"
    9. End Sub

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „MB-Tech“ ()

    SystemUnknow schrieb:

    [VB 2008] File download with progressbar!
    du muß der code nur anpassen !
    Hä? Wieso postest du mir das? Da steht doch das gleiche drin, was ich schon bereits habe.
    Ich weiß schon wie das geht, aber mein Problem ist ein anderes. Les doch mal richtig :evil:
    Ehm...?

    Ich weiß schon wie es geht. Aber wieso willst du mir diese Vorlage geben? Meinst du ich soll einfach die Bytes auslesen und dann die Prozent selbst ausrechnen.
    Werde ich mal machen.

    EDIT: Ok, wenn ich mir die % selbst ausrechne, dann klappt es. Vielen Dank!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MB-Tech“ ()

    1. Ist das Thema auf "erledigt"
    2. Brauchst du mir nicht die ganze Zeit Links schicken, wie das mit dem Upload geht. Das war nicht meine Frage...