Download mit Progressbar+Restzeitbestimmen

  • Hallo Ich zeige euch mal eine von mir ungeprobte möglichkeit einen download mit progressbar + Restzeitberechnung zu machen

    So als erstes was brauchen wir
    1. einen Timer
    2. Eine Progressbar
    3. eine Sub in Der wir den download beginnen
    4. Den Import von der System.Net

    So also beginnen wir
    Als erstes einmal Schreibt ihr über Eine sub aber noch in die classe

    Code
    Dim Wclient As New WebClient


    sollte es einen fehler geben habt ihr vergessen die system.net zu importieren

    dann in die aufrufsub kommt

    Code
    Dim sfd As New SaveFileDialog
            sfd.ShowDialog()
            Timer1.Start()
            w.DownloadFileAsync(New Uri(TextBox1.Text), sfd.FileName)
            Timer1.Stop()
            MsgBox("Download Complete")


    sfd ist ein savefiledialog da die datei ja auch irgendwo gespeichert werden muss
    textbox1.text ist die url
    nun erstellt ihr eine neue sub die nennt ihr progress und in die klammern kommt

    Code
    ByVal e As DownloadProgressChangedEventArgs, ByVal sender As Object


    und als Handle nehm ihr w.DownloadProgressChanged
    also komplett

    Code
    Sub Progress(ByVal e As DownloadProgressChangedEventArgs, ByVal sender As Object) Handles w.DownloadProgressChanged


    über diese sub schreibt ihr nun

    Code
    Dim a As Uint64
    Dim b As Uint64
    Dim c As Uint64 = 0
    Dim RestTime As Double
    Dim drate As Double


    und in die neu erstellte sub kommt nun

    Code
    ProgressBar1.Value = e.ProgressPercentage
            a = e.BytesReceived
            b = e.TotalBytesToReceive


    Wichtig Timer intervall mus eine sekunde sein
    nun zum timer in die timer sub kommt

    Code
    c += 1
            If a > 5 Then
                resttime = (c / a) * (b - a)
                drate = (a / c)
            End If


    c ist die anzahl der verstrichenen sekunden
    a ist die anzahl der bereits runtergeladenen bytes
    b ist die grösse in bytes
    (c / a) ist die zeit wie lange ein byte dauert
    (b - a) ist die restbyteanzahl
    resttimer ist die restliche zeit in sekunden
    c+= bedeutet dass eine sekunde verstrichen ist
    If a > 5 Then da ihr sonst den divide by Null error bekommt
    nun könnt ihr die Variable resttime verwenden
    (a / c) die bytes per second

    somit kann man auch files vom system kopieren lassen

    Mein kompletter code

    Zitat von Steve Jobs

    Stay hungry - stay foolish.



  • Ich finde nur den anfang ein wenig uverständlich erklärt, man bekommt es zwar hin aber manche wisse ja auch nciht wie mann bzw sachen importiert usw

  • Der Download funktioniert bei mir, aber die Progressbar nicht..

    Der Code ist sowiesoo zum Kotzen ..

    [CENTER][LEFT]

    Zitat von Kuroibara;170836


    Lol sorry jetzts reichts mir mit dir du hast doch nen Knall junge [COLOR=DarkGreen]geh in deine Ecke[/COLOR] [COLOR=Red]und[/COLOR] [COLOR=Green]verschwinde von hier.[/COLOR]

    [/LEFT]

    [LEFT]
    [/LEFT]
    [/CENTER]

  • bei manchen hostern funktioniert es nicht richtig

    und wenn dir der code nicht gefällt such dir ne andere möglichkeit. ach ja wenn du die hättest würdest du nicht in diesen thread sehen

    Zitat von Steve Jobs

    Stay hungry - stay foolish.



Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!