WebClient.DownloadProgressChanged Olay
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Zaman uyumsuz indirme işlemi verilerin bir kısmını veya tümünü başarıyla aktardığında gerçekleşir.
public:
event System::Net::DownloadProgressChangedEventHandler ^ DownloadProgressChanged;
public event System.Net.DownloadProgressChangedEventHandler? DownloadProgressChanged;
public event System.Net.DownloadProgressChangedEventHandler DownloadProgressChanged;
member this.DownloadProgressChanged : System.Net.DownloadProgressChangedEventHandler
Public Custom Event DownloadProgressChanged As DownloadProgressChangedEventHandler
Public Event DownloadProgressChanged As DownloadProgressChangedEventHandler
Olay Türü
Örnekler
Aşağıdaki kod örneği, DownloadProgressChanged
olayı için bir olay işleyicisi ayarlamayı gösterir.
// Sample call : DownLoadFileInBackground4 ("http://www.contoso.com/logs/January.txt");
void DownLoadFileInBackground4( String^ address )
{
WebClient^ client = gcnew WebClient;
Uri ^uri = gcnew Uri(address);
// Specify a DownloadFileCompleted handler here...
// Specify a progress notification handler.
client->DownloadProgressChanged += gcnew DownloadProgressChangedEventHandler( DownloadProgressCallback4 );
client->DownloadFileAsync( uri, "serverdata.txt" );
}
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);
}
// 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);
}
' Sample call : DownLoadFileInBackground4 ("http://www.contoso.com/logs/January.txt");
Public Shared Sub DownLoadFileInBackground4(ByVal address As String)
Dim client As WebClient = New WebClient()
' Specify a DownloadFileCompleted handler here...
' Specify a progress notification handler.
AddHandler client.DownloadProgressChanged, AddressOf DownloadProgressCallback4
Dim uri as Uri = New Uri(address)
client.DownloadFileAsync(uri, "serverdata.txt")
End Sub
Private Shared Sub DownloadProgressCallback4(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
' Displays the operation identifier, and the transfer progress.
Console.WriteLine("{0} downloaded {1} of {2} bytes. {3} % complete...", _
CStr(e.UserState), e.BytesReceived, e.TotalBytesToReceive, e.ProgressPercentage)
End Sub
Açıklamalar
Dikkat
WebRequest
, HttpWebRequest
, ServicePoint
ve 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:
internal class MyWebClient : WebClientProtocol
{
protected override WebRequest GetWebRequest(Uri address)
{
FtpWebRequest req = (FtpWebRequest)base.GetWebRequest(address);
req.UsePassive = false;
return req;
}
}