WebClient.DownloadProgressChanged Ereignis
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Tritt auf, wenn ein asynchroner Downloadvorgang erfolgreich einige oder alle Daten überträgt.
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
Ereignistyp
Beispiele
Im folgenden Codebeispiel wird das Festlegen eines Ereignishandlers für das DownloadProgressChanged
-Ereignis veranschaulicht.
// 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
Hinweise
Vorsicht
WebRequest
, HttpWebRequest
, ServicePoint
und WebClient
sind veraltet, und Sie sollten sie nicht für die neue Entwicklung verwenden. Verwenden Sie stattdessen HttpClient.
Dieses Ereignis wird jedes Mal ausgelöst, wenn ein asynchroner Download fortschritte macht. Dieses Ereignis wird ausgelöst, wenn Downloads mit einer der folgenden Methoden gestartet werden.
Methode | Beschreibung |
---|---|
DownloadDataAsync | Lädt Daten aus einer Ressource herunter und gibt ein Byte Array zurück, ohne den aufrufenden Thread zu blockieren. |
DownloadFileAsync | Lädt Daten aus einer Ressource in eine lokale Datei herunter, ohne den aufrufenden Thread zu blockieren. |
OpenReadAsync | Gibt die Daten aus einer Ressource zurück, ohne den aufrufenden Thread zu blockieren. |
Die DownloadProgressChangedEventHandler ist die Stellvertretung für dieses Ereignis. Die DownloadProgressChangedEventArgs-Klasse stellt den Ereignishandler mit Ereignisdaten bereit.
Weitere Informationen zum Behandeln von Ereignissen finden Sie unter Behandeln und Auslösen von Ereignissen.
Anmerkung
Eine passive FTP-Dateiübertragung zeigt immer einen Fortschrittsprozentsatz von Null an, da der Server die Dateigröße nicht gesendet hat. Um den Fortschritt anzuzeigen, können Sie die FTP-Verbindung in "aktiv" ändern, indem Sie die GetWebRequest(Uri) virtuelle Methode außer Kraft setzen:
internal class MyWebClient : WebClientProtocol
{
protected override WebRequest GetWebRequest(Uri address)
{
FtpWebRequest req = (FtpWebRequest)base.GetWebRequest(address);
req.UsePassive = false;
return req;
}
}