myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Ungelesen 22.09.10, 13:11   #1
.ShoXx!
 
Benutzerbild von .ShoXx!
 
Registriert seit: Dec 2009
Beiträge: 794
Bedankt: 49
.ShoXx! ist noch neu hier! | 8 Respekt Punkte
Standard [VB.NET] MultiDownload

Hallo,
hoffe mir kann jemand bei meinem Problem helfen.
Also ich arbeite grade an einem Downloader mit dem man mehrere Downloads gleichzeitig durchführen kann. Wie man eine Datei runterlädt und den Fortschritt in einer Progressbar anzeigt weiß ich auch, nur nicht wenn z.B. 3 oder mehr Dateien runtergeladen werden. Ich weiß nicht wie ich dann pro Datei eine ProgressBar mit den bereits heruntergeladenen Bytes anzeigen soll..zurzeit benutze ich diesen Code:
Code:
Private counter As Integer = 0

Private Sub FileDownload()
        For i As Integer = 0 To ListView1.Items.Count - 1
            Dim downloadClient As New WebClient
            AddHandler downloadClient.DownloadFileCompleted, AddressOf downloadClient_DownloadFileCompleted
            AddHandler downloadClient.DownloadProgressChanged, AddressOf downloadClient_DownloadProgressChanged
            Dim lvItem As String() = Split(ListView1.Items(i).Text, "/")
            downloadClient.DownloadFileAsync(New Uri(ListView1.Items(i).Text), Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\" & lvItem(lvItem.Length - 1))
        Next
    End Sub

Private Sub downloadClient_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs)
        ProgressBar1.Value = e.ProgressPercentage
        Label1.Text = "Downloading: " & Format(((e.BytesReceived / 1024) / 1024), "###,###,##0.00") & "MB / " & Format(((e.TotalBytesToReceive / 1024) / 1024), "###,###,##0.00") & "MB" & " (" & CStr(ProgressBar1.Value) & "%" & ")"
    End Sub

    Private Sub downloadClient_DownloadFileCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
        If Not counter = ListView1.Items.Count - 1 Then
            counter += 1
            FileDownload()
        End If
    End Sub
Ist zwar hier vllt etwas schwer zu lesen, aber geht ja nicht anders.
In der Schleife der Sub FileDownload() erstelle ich erstmal für jeden Eintrag in einer ListView (die Einträge sind auch schon gleiche die Download-Links) einen WebClienten und füge dann die Events "DownloadProgressChanged" um den Fortschritt anzuzeigen und "DownloadFileCompleted" um den nächsten Download zu starten (counter wird dabei jedes mal hochgezählt und wenn die Zahl im counter so hoch ist wie die Anzahl der Einträge dann wird nichts mehr heruntergeladen).
Das "lvItem" ist nur dazuda um aus der URL den Dateinamen auszulesen und die Datei unter dem Namen dann auf dem Desktop zu speichern..
Also wenn ich nun mit diesem Code 3 Dateien gleichzeitig runterlade, dann wird für etwa 2sec der Fortschritt von der 1.Datei, dann wieder nach 2sec. der Fortschritt der 2.Datei und dann der 3.Datei angezeigt und das wird die ganze Zeit so gemacht, bis alle Downloads fertig sind..

Hoffe, dass mir jemand trotz so einem langen Text helfen kann
__________________
To succeed you have to stop being ordinary and be legen - wait for it - dary.
.ShoXx! ist offline   Mit Zitat antworten
Ungelesen 22.09.10, 18:29   #2
urga
Mitglied
 
Benutzerbild von urga
 
Registriert seit: Aug 2009
Ort: void* (*wtf[])(void **);
Beiträge: 454
Bedankt: 137
urga ist noch neu hier! | 0 Respekt Punkte
Standard

fang mal hier an: [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
__________________
entropie erfordert keine wartung
urga ist offline   Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:52 Uhr.


Sitemap

().