WebClient.DownloadProgressChanged WebClient.DownloadProgressChanged WebClient.DownloadProgressChanged WebClient.DownloadProgressChanged Event

Definition

Tritt ein, wenn Daten teilweise oder vollständig erfolgreich über einen asynchronen Download übertragen werden.Occurs when an asynchronous download operation successfully transfers some or all of the data.

public:
 event System::Net::DownloadProgressChangedEventHandler ^ DownloadProgressChanged;
public event System.Net.DownloadProgressChangedEventHandler DownloadProgressChanged;
member this.DownloadProgressChanged : System.Net.DownloadProgressChangedEventHandler 
Public Custom Event DownloadProgressChanged As DownloadProgressChangedEventHandler 

Beispiele

Das folgende Codebeispiel veranschaulicht das Festlegen von eines ereignishandlers für dieses Ereignis.The following code example demonstrates setting an event handler for this event.

// Sample call : DownLoadFileInBackground2 ("http://www.contoso.com/logs/January.txt");
void DownLoadFileInBackground2( String^ address )
{
   WebClient^ client = gcnew WebClient;
   Uri ^uri = gcnew Uri(address);
   
   // Specify that the DownloadFileCallback method gets called
   // when the download completes.
   client->DownloadFileCompleted += gcnew AsyncCompletedEventHandler( DownloadFileCallback2 );
   
   // Specify a progress notification handler.
   client->DownloadProgressChanged += gcnew DownloadProgressChangedEventHandler( DownloadProgressCallback );
   client->DownloadFileAsync( uri, "serverdata.txt" );
}


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

    // Specify that the DownloadFileCallback method gets called
    // when the download completes.
    client.DownloadFileCompleted += new AsyncCompletedEventHandler (DownloadFileCallback2);
    // Specify a progress notification handler.
    client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressCallback);
    client.DownloadFileAsync (uri, "serverdata.txt");
}

'  Sample call : DownLoadFileInBackground2 ("http:' www.contoso.com/logs/January.txt")
Public Shared Sub DownLoadFileInBackground2(ByVal address As String)

	Dim client As WebClient = New WebClient()

	'  Specify that the DownloadFileCallback method gets called
	'  when the download completes.
	AddHandler client.DownloadFileCompleted, AddressOf DownloadFileCallback2
	'  Specify a progress notification handler.
	AddHandler client.DownloadProgressChanged, AddressOf DownloadProgressCallback
                      Dim uri as Uri = New Uri(address)
	client.DownloadFileAsync(uri, "serverdata.txt")
End Sub

Das folgende Codebeispiel zeigt eine Implementierung eines Handlers für dieses Ereignis.The following code example shows an implementation of a handler for this event.

static void UploadProgressCallback(Object^ sender, 
          UploadProgressChangedEventArgs^ e)
      {
          // Displays the operation identifier, and the transfer progress.
          Console::WriteLine("{0}    uploaded {1} of {2} bytes. {3} % complete...", 
              (String ^)e->UserState, 
              e->BytesSent, 
              e->TotalBytesToSend,
              e->ProgressPercentage);
      }
static void DownloadProgressCallback(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);
      }
private static void UploadProgressCallback(object sender, UploadProgressChangedEventArgs e)
{
    // Displays the operation identifier, and the transfer progress.
    Console.WriteLine("{0}    uploaded {1} of {2} bytes. {3} % complete...", 
        (string)e.UserState, 
        e.BytesSent, 
        e.TotalBytesToSend,
        e.ProgressPercentage);
}
private static void DownloadProgressCallback(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);
}
Private Shared Sub UploadProgressCallback(ByVal sender As Object, ByVal e As UploadProgressChangedEventArgs)

    '  Displays the operation identifier, and the transfer progress.
    Console.WriteLine("{0}    uploaded {1} of {2} bytes. {3} % complete...", _
     CStr(e.UserState), e.BytesSent, e.TotalBytesToSend, e.ProgressPercentage)
End Sub
Private Shared Sub DownloadProgressCallback(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

Dieses Ereignis wird jedes Mal ausgelöst, ein asynchroner Download durchgeführt wird.This event is raised each time an asynchronous download makes progress. Dieses Ereignis wird ausgelöst, wenn Downloads mit einer der folgenden Methoden gestartet werden.This event is raised when downloads are started using any of the following methods.

MethodeMethod Beschreibung Description
DownloadDataAsync Lädt Daten aus einer Ressource herunter, und gibt eine Byte Array ohne Blockieren des aufrufenden Threads.Downloads data from a resource and returns a Byte array, without blocking the calling thread.
DownloadFileAsync Lädt Daten aus einer Ressource in einer lokalen Datei, ohne den aufrufenden Thread blockieren.Downloads data from a resource to a local file, without blocking the calling thread.
OpenReadAsync Die Daten zurückgegeben aus einer Ressource, ohne den aufrufenden Thread blockieren.Returns the data from a resource, without blocking the calling thread.

Die DownloadProgressChangedEventHandler ist der Delegat für dieses Ereignis.The DownloadProgressChangedEventHandler is the delegate for this event. Die DownloadProgressChangedEventArgs Klasse stellt den Ereignishandler mit Ereignisdaten bereit.The DownloadProgressChangedEventArgs class provides the event handler with event data.

Weitere Informationen zum Behandeln von Ereignissen finden Sie unter behandeln und Auslösen von Ereignissen.For more information about how to handle events, see Handling and Raising Events.

Hinweis

Eine passive FTP-Dateiübertragung zeigen daraufhin immer eine statusprozentsatz 0 (null), da die Dateigröße nicht in der Server gesendet hat.A passive FTP file transfer will always show a progress percentage of zero, since the server did not send the file size. Um den Fortschritt anzuzeigen, können Sie die FTP-Verbindung in den aktiven ändern, durch Überschreiben der GetWebRequest virtuelle Methode:To show progress, you can change the FTP connection to active by overriding the GetWebRequest virtual method:

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

Gilt für: