myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [VB.NET] MultiDownload (https://mygully.com/showthread.php?t=2123941)

.ShoXx! 22.09.10 13:11

[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:)

urga 22.09.10 18:29

fang mal hier an: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:03 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.