Aktuelle Download-Rate (in KB / s) ermitteln - +unendlich?

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von tomso.

    Aktuelle Download-Rate (in KB / s) ermitteln - +unendlich?

    Hallo

    Ich habe hier im Forum ein Thread gefunden, der einen zeigt wie man die Downloadrate ermittelt, allerdings funktioniert es bei mir nicht so gut wie bei den anderen, bei mir bekomme ich immer bei der Download-Rate "+unendlich" raus ..

    VB.NET-Quellcode

    1. Dim C As Integer = 0
    2. Dim StopWatch As New Stopwatch
    3. Private WithEvents WebClient As New Net.WebClient


    VB.NET-Quellcode

    1. Private Sub WebClient_DownloadProgressChanged(sender As Object, e As DownloadProgressChangedEventArgs) Handles WebClient.DownloadProgressChanged
    2. StopWatch.Stop()
    3. Me.Label1.Text = Math.Round(e.BytesReceived / 1024 / 1024, 2) & " MB / " & Math.Round(e.TotalBytesToReceive / 1024 / 1024, 2) & " MB" & " (" & Math.Round(e.BytesReceived - C) / 1024 / (StopWatch.ElapsedMilliseconds / 1000) & " KB / s )"
    4. Me.ProgressBar1.Value = e.ProgressPercentage
    5. C = CInt(e.BytesReceived)
    6. StopWatch.Reset()
    7. End Sub

    (System.Net ist importiert)

    Woran liegt das? ..
    Thread: [VB.NET] Downloadgeschwindigkeit (KB/s) berechnen (Eine Lösung konnte ich nicht finden ..)
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford
    Hi
    weil keine Millisekunde zwischen zwei Fortschrittsänderungen eintreten. Nimm einen Timer mit Intervall 500 und dividiere dann entsprechend durch die vergangene Zeit relativ zum vergangenen Tick (in Variablen speichern!). Das hab' ich aber glaub' ich in dem anderen Topic auch schon erwähnt.

    Gruß
    ~blaze~
    Hi,

    Das ist doch ganz einfach. Es sagt doch schon Kilobyte die Sekunde. Also wenn du bei 0 Sek. 1000 MB geladen hast und du bei 1 Sek. 1678 MB bekommst, hast du eine Rate von 678 KB/s. Das lässt sich mit einem 1 Sek. Timer gut verwirklichen für den Anfang. Ist halt nicht ganz so kompliziert wie der obrige Code. :D
    Ich rätsel und suche jetzt wieder wahrscheinlich schon 1. oder 2 Std ...

    Ich komme einfach nicht drauf wie ich feststelle wieviel Byte ich in einer Sekunde runtergeladen habe und in eine Variable lade ... ?(
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford
    Oben wurden Dir doch 2 Beispiele genannt. Eines ist sogar von mir und das macht genau, was Du willst. Iwo hab ich zuhause noch eine verbesserte Version, jedoch ist die von oben funktional.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Kleine Hilfe.

    VB.NET-Quellcode

    1. Dim Bytes_jetzt As Integer = 0
    2. Sub Timer_Tick() Handles Timer.Tick
    3. Dim Rate As Integer = e.BytesRe... - Bytes_jetzt
    4. Bytes_jetzt = e.BytesRe...
    5. End Sub


    So ähnlich. Rate ist denn deine DowRate.

    Beispiel Projekt angehängt

    @Vultrax

    So startest du den Download:

    VB.NET-Quellcode

    1. wc.DownloadFileAsync(New Uri(DeineURL), DeinSpeicherPfad, Stopwatch.StartNew)

    Zuvor wc deklarieren (mit Events):

    VB.NET-Quellcode

    1. Private WithEvents wc As New WebClient

    Dann im ProgressChangedEvent:

    VB.NET-Quellcode

    1. Dim speed As Double = e.BytesReceived / (DirectCast(e.UserState, Stopwatch).ElapsedMilliseconds / 1000)

    Gruß
    Switcherlapp97

    EDIT: Beispiel-Projekt angehängt
    Dateien
    RubiksCubeSolver


    Jetzt im Showroom

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