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

Définition

Se produit lorsqu'une opération de téléchargement asynchrone transfère avec succès une partie ou l'ensemble des données.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 

Exemples

L’exemple de code suivant illustre la définition d’un gestionnaire d’événements pour cet événement.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

L’exemple de code suivant illustre une implémentation d’un gestionnaire pour cet événement.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

Remarques

Cet événement est déclenché chaque fois qu’un téléchargement asynchrone est en cours.This event is raised each time an asynchronous download makes progress. Cet événement est déclenché lorsque les téléchargements sont démarrés en utilisant l’une des méthodes suivantes.This event is raised when downloads are started using any of the following methods.

MéthodeMethod Description Description
DownloadDataAsync Télécharge des données à partir d’une ressource et retourne un Byte tableau, sans bloquer le thread appelant.Downloads data from a resource and returns a Byte array, without blocking the calling thread.
DownloadFileAsync Télécharge des données à partir d’une ressource dans un fichier local, sans bloquer le thread appelant.Downloads data from a resource to a local file, without blocking the calling thread.
OpenReadAsync Retourne les données à partir d’une ressource, sans bloquer le thread appelant.Returns the data from a resource, without blocking the calling thread.

Le DownloadProgressChangedEventHandler est le délégué de cet événement.The DownloadProgressChangedEventHandler is the delegate for this event. Le DownloadProgressChangedEventArgs classe fournit le Gestionnaire d’événements avec les données d’événement.The DownloadProgressChangedEventArgs class provides the event handler with event data.

Pour plus d’informations sur la façon de gérer les événements, consultez gestion et déclenchement d’événements.For more information about how to handle events, see Handling and Raising Events.

Notes

Un transfert de fichiers FTP passif affichera toujours un pourcentage de progression de zéro, dans la mesure où le serveur n’a pas envoyé de la taille du fichier.A passive FTP file transfer will always show a progress percentage of zero, since the server did not send the file size. Pour afficher la progression, vous pouvez modifier la connexion FTP à l’état actif, en substituant le GetWebRequest méthode virtuelle :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;  
    }  
}  

S’applique à