C# - Download mit Forschrittszeige

Hier ein Beispiel für einen asynchronen Download mit Fortschrittszeige in C#. Der aktuelle Status wird in Form einer Progress-Bar angezeigt.

Für den Download verwenden wir die WebClient-Klasse:

WebClient client = new WebClient();  
client.DownloadFileAsync(new Uri("http://www.schneuse.de/download.zip), "c:\\download.zip");

Da wir uns über den Fortschritt informieren lassen wollen, fügen wir zwei EventHandler hinzu:

client.DownloadProgressChanged += Client_DownloadProgressChanged;
client.DownloadFileCompleted += Client_DownloadFileCompleted;

Der erste für den Fortschritt:

private void Client_DownloadProgressChanged(object sender, System.Net.DownloadProgressChangedEventArgs e)
{
    double bytesIn = double.Parse(e.BytesReceived.ToString());
    double totalBytes = double.Parse(e.TotalBytesToReceive.ToString());
    double percentage = bytesIn / totalBytes * 100;

    progressBar.Value = int.Parse(Math.Truncate(percentage).ToString());
}    

Der zweite für den Abschluss des Downloads:

private void Client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
    MessageBox.Show("Download fertig!");
}

Das wars auch schon. Wie man sieht funktioniert das recht einfach und problemlos. Die asynchrone Ausführung erledigt C# im Hintergrund.



Datenschutzerklärung | Impressum