WebClient.DownloadProgressChanged Olay

Tanım

Zaman uyumsuz indirme işlemi verilerin bir kısmını veya tümünü başarıyla aktardığında gerçekleşir.

C#
public event System.Net.DownloadProgressChangedEventHandler? DownloadProgressChanged;
C#
public event System.Net.DownloadProgressChangedEventHandler DownloadProgressChanged;

Olay Türü

Örnekler

Aşağıdaki kod örneği, DownloadProgressChanged olayı için bir olay işleyicisi ayarlamayı gösterir.

C#
// Sample call : DownLoadFileInBackground4 ("http://www.contoso.com/logs/January.txt");
public static void DownLoadFileInBackground4(string address)
{
    WebClient client = new WebClient();
    Uri uri = new Uri(address);

    // Specify a DownloadFileCompleted handler here...

    // Specify a progress notification handler.
    client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressCallback4);

    client.DownloadFileAsync(uri, "serverdata.txt");
}

private static void DownloadProgressCallback4(object sender, DownloadProgressChangedEventArgs e)
{
    // Displays the operation identifier, and the transfer progress.
    Console.WriteLine("{0}    downloaded {1} of {2} bytes. {3} % complete...",
        (string)e.UserState,
        e.BytesReceived,
        e.TotalBytesToReceive,
        e.ProgressPercentage);
}

Açıklamalar

Dikkat

WebRequest, HttpWebRequest, ServicePointve WebClient kullanım dışıdır ve bunları yeni geliştirme için kullanmamalısınız. Bunun yerine HttpClient kullanın.

Bu olay, zaman uyumsuz bir indirme işlemi her ilerleme kaydettiğinde oluşturulur. Bu olay, indirmeler aşağıdaki yöntemlerden herhangi biri kullanılarak başlatıldığında tetiklenir.

Yöntem Açıklama
DownloadDataAsync Bir kaynaktan veri indirir ve çağıran iş parçacığını engellemeden bir Byte dizisi döndürür.
DownloadFileAsync Çağıran iş parçacığını engellemeden verileri bir kaynaktan yerel bir dosyaya indirir.
OpenReadAsync Çağıran iş parçacığını engellemeden bir kaynaktan verileri döndürür.

DownloadProgressChangedEventHandler bu olayın temsilcisidir. DownloadProgressChangedEventArgs sınıfı, olay işleyicisine olay verilerini sağlar.

Olayları işleme hakkında daha fazla bilgi için bkz. olayları işleme ve oluşturma.

Not

Pasif FTP dosya aktarımı, sunucu dosya boyutunu göndermediğinden her zaman sıfır ilerleme yüzdesi gösterir. İlerleme durumunu göstermek için, GetWebRequest(Uri) sanal yöntemini geçersiz kılarak FTP bağlantısını etkin olarak değiştirebilirsiniz:

C#
internal class MyWebClient : WebClientProtocol
{
    protected override WebRequest GetWebRequest(Uri address)
    {
        FtpWebRequest req = (FtpWebRequest)base.GetWebRequest(address);
        req.UsePassive = false;
        return req;
    }
}

Şunlara uygulanır

Ürün Sürümler
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1