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

Definición

Se produce cuando una operación de descarga asincrónica transfiere correctamente una parte o la totalidad de los datos.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 

Ejemplos

En el ejemplo de código siguiente se muestra cómo establecer un controlador de eventos para este evento.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

En el ejemplo de código siguiente se muestra una implementación de un controlador para este evento.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

Comentarios

Este evento se provoca cada vez que progresa una descarga asincrónica.This event is raised each time an asynchronous download makes progress. Este evento se desencadena cuando se inician las descargas mediante cualquiera de los métodos siguientes.This event is raised when downloads are started using any of the following methods.

MétodoMethod DescripciónDescription
DownloadDataAsync Descarga los datos desde un recurso y devuelve un Byte matriz sin bloquear el subproceso que realiza la llamada.Downloads data from a resource and returns a Byte array, without blocking the calling thread.
DownloadFileAsync Descarga los datos desde un recurso en un archivo local, sin bloquear el subproceso que realiza la llamada.Downloads data from a resource to a local file, without blocking the calling thread.
OpenReadAsync Devuelve los datos de un recurso, sin bloquear el subproceso que realiza la llamada.Returns the data from a resource, without blocking the calling thread.

El DownloadProgressChangedEventHandler es el delegado de este evento.The DownloadProgressChangedEventHandler is the delegate for this event. La DownloadProgressChangedEventArgs clase proporciona el controlador de eventos con datos de evento.The DownloadProgressChangedEventArgs class provides the event handler with event data.

Para obtener más información acerca de cómo controlar eventos, vea controlar y provocar eventos.For more information about how to handle events, see Handling and Raising Events.

Nota

Una transferencia de archivos FTP pasiva siempre mostrará un porcentaje de progreso de cero, ya que el servidor no envió el tamaño del archivo.A passive FTP file transfer will always show a progress percentage of zero, since the server did not send the file size. Para mostrar el progreso, puede cambiar la conexión FTP a activa reemplazando el GetWebRequest método virtual: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;  
    }  
}  

Se aplica a