WebClient sınıfını kullanarak internetten senkronize ya da asenkronize olarak dosya indirelim.

Adım 1: Gerekli isim alanlarını projeye ekleyelim:
using System.Net;
using System.ComponentModel;


Adım 2: Dosya ile ilgi değişkenlerimizi tanımlayalım:
// Notepad++
string indirilecek = "http://download.tuxfamily.org/notepadplus/6.4.3/npp.6.4.3.Installer.exe";
string klasor = "C:\\";
string dosyaAdi = "npp.6.4.3.Installer.exe";


Adım 3: WebClient nesnesini oluşturup, indirme ile ilgili eventları tanımlayalım:
WebClient webClient = new WebClient();

// Tamamlandığında
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);

// İndirme yüzdesi değiştiğinde
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);

// İndirmeyi asenkron olarak başlat
webClient.DownloadFileAsync(new Uri(indirilecek), klasor + dosyaAdi);


Adım 4: İndirme yüzdesi her değiştiğinde:
private static void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
Console.WriteLine("Dosya indiriliyor: %{0}", e.ProgressPercentage);
}


Adım 5: İndirme tamamlandığında:
private static void Completed(object sender, AsyncCompletedEventArgs e)
{
Console.WriteLine("Dosya indirme tamamlandı!");
}


Kaynak: Internetten dosya indirme (C#)