Guten Tag ,
ich möchte euch nun zeigen wie ihr einen Multidownloader mit Progressbar erstellt.
Ganz am anfang Importiert ihr folgendes :
Als nächstes Definieren wir erstmal alle Variablen :
EDIT// Hier eine kleine änderung
So das Form_Load ereigniss :
Das haben wir dann schonmal als nächstes der Quelltext vom Backgroundworker :
So und was jetzt noch fehlt für die Progressbar :
Ich denke der Source ist fast selbstverständlich.
Die Text datei muss so aussehen :
In jeder Zeile ein Downloadlink.
Verbesserungs Vorschläge gern gesehen.
Mfg
ChRoNiK
edit by nicgenie://
Rot ist für Mods
ich möchte euch nun zeigen wie ihr einen Multidownloader mit Progressbar erstellt.
Ganz am anfang Importiert ihr folgendes :
Als nächstes Definieren wir erstmal alle Variablen :
EDIT// Hier eine kleine änderung
VB.NET-Quellcode
- Public Class Form1
- Withevents WebClient1 as New Net.WebClient ' Für das WebClient steuerelement mit Events z.b. DownloadProgressChanged...
- Dim sLine As String ' Für die Zeilen der Textdatei
- Dim oStream As IO.StreamReader ' Zum auslesen der Textdatei
- Dim gesendet As Integer ' Bytes die gesendet wurden
- Dim gesammt As Integer ' Bytes gesammt der Datei
- Dim titel As String = "Multidownloader " ' Fenstertitel
So das Form_Load ereigniss :
VB.NET-Quellcode
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- lblstatus.Text = "" ' Setzt den Status Text auf "" also nichts
- lblname.Visible = False ' Macht das lblname Label unsichtbar weil es nur für den Code gebraucht wird.
- Me.Text = titel & " © by ChRoNiK" ' Fenstertitel ändern
- bg.RunWorkerAsync() ' Backgroundworker starten der die Dateien in einem anderem Thread downloadet um einfrieren des Programms zu verhindern während des Downloads
- End Sub
Das haben wir dann schonmal als nächstes der Quelltext vom Backgroundworker :
VB.NET-Quellcode
- Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bg.DoWork
- If My.Computer.FileSystem.FileExists(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\update.txt") Then ' Prüfen ob Datei vorhanden ist
- My.Computer.FileSystem.DeleteFile(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\update.txt") ' Wenn ja löschen
- End If
- My.Computer.Network.DownloadFile("http://g6d.g6.funpic.de/update.txt", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\update.txt") 'Datei downloaden mit den Links
- Dim leser As String ' Eine neue Variable erstellen mit dem namen leser des Typs String
- leser = My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\update.txt" 'Speichert den Pfad zur Datei in die Variable leser.
- Dim oFile As New IO.FileInfo(leser) ' Holt sich die Infos über die Datei !
- If oFile.Exists() = True Then ' Wenn die Datei "update.txt" existiert dann..
- oStream = New IO.StreamReader(leser) 'Datei zum lesen auswählen
- ' Datei zeilenweise auslese
- Do
- If WebClient1.IsBusy = True Then ' wenn webclient1 schon am arbeiten ist dann
- ''''nichts machen
- Else ' Falls nicht
- sLine = oStream.ReadLine() 'Nächste Zeile der Textdatei lesen
- If IsNothing(sLine) Then MessageBox.Show("Keine weiteren Dateien zum Download verfügbar") ' Wenn die Zeile Leer ist dann Messagebox zur Info anzeigen
- Dim uri As New Uri(sLine) 'URL für den Webclient setzen mit dem Link aus der Zeile der Textdatei.
- Dim dateiname As String = IO.Path.GetFileName(sLine) 'Den dateinamen holen von der Datei die gedownloadet werden soll.
- lblname.Text = dateiname 'Dem Label "lblname" den Dateinamen als Text geben.
- WebClient1.DownloadFileAsync(uri, My.Computer.FileSystem.CurrentDirectory & "\" & dateiname) ' Den Download der Datei starten.
- End If
- Loop
- oStream.Close() 'wenn alles fertig lesen schließen
- End If
- End Sub
So und was jetzt noch fehlt für die Progressbar :
VB.NET-Quellcode
- Private Sub WebClient1_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles WebClient1.DownloadProgressChanged
- gesendet = e.BytesReceived 'Die gesendetem Bytes in der Variable gesendet speichern
- gesammt = e.TotalBytesToReceive 'Die gesammten Bytes in die Variable gesammt speichern
- lblstatus.Text = gesendet & " von " & gesammt & " empfangen. Dateiname : " & lblname.Text 'Status anzeigen
- Me.Text = titel & " " & e.ProgressPercentage & " % von " & lblname.Text 'Fenstertitel ändern
- ProgressBar1.Value = e.ProgressPercentage 'Progressbar füllen.
- End Sub
Ich denke der Source ist fast selbstverständlich.
Die Text datei muss so aussehen :
In jeder Zeile ein Downloadlink.
Verbesserungs Vorschläge gern gesehen.
Mfg
ChRoNiK
edit by nicgenie://
Rot ist für Mods
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „nicgenie“ () aus folgendem Grund: Code verbesserung ;)