WebClient.DownloadDataCompleted Evento
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Se produce cuando se completa una operación de descarga de datos asincrónica.
public:
event System::Net::DownloadDataCompletedEventHandler ^ DownloadDataCompleted;
public event System.Net.DownloadDataCompletedEventHandler? DownloadDataCompleted;
public event System.Net.DownloadDataCompletedEventHandler DownloadDataCompleted;
member this.DownloadDataCompleted : System.Net.DownloadDataCompletedEventHandler
Public Custom Event DownloadDataCompleted As DownloadDataCompletedEventHandler
Public Event DownloadDataCompleted As DownloadDataCompletedEventHandler
Tipo de evento
Ejemplos
En el ejemplo de código siguiente se muestra cómo establecer un controlador de eventos para este evento.
// Sample call : DownLoadDataInBackground ("http://www.contoso.com/GameScores.html");
void DownloadDataInBackground( String^ address )
{
System::Threading::AutoResetEvent^ waiter = gcnew System::Threading::AutoResetEvent( false );
WebClient^ client = gcnew WebClient;
Uri ^uri = gcnew Uri(address);
// Specify that the DownloadDataCallback method gets called
// when the download completes.
client->DownloadDataCompleted += gcnew DownloadDataCompletedEventHandler( DownloadDataCallback );
client->DownloadDataAsync( uri, waiter );
// Block the main application thread. Real applications
// can perform other tasks while waiting for the download to complete.
waiter->WaitOne();
}
// Sample call : DownLoadDataInBackground ("http://www.contoso.com/GameScores.html");
public static void DownloadDataInBackground(string address)
{
System.Threading.AutoResetEvent waiter = new System.Threading.AutoResetEvent(false);
WebClient client = new WebClient();
Uri uri = new Uri(address);
// Specify that the DownloadDataCallback method gets called
// when the download completes.
client.DownloadDataCompleted += new DownloadDataCompletedEventHandler(DownloadDataCallback);
client.DownloadDataAsync(uri, waiter);
// Block the main application thread. Real applications
// can perform other tasks while waiting for the download to complete.
waiter.WaitOne();
}
' Sample call : DownLoadDataInBackground ("http:' www.contoso.com/GameScores.html")
Public Shared Sub DownloadDataInBackground(ByVal address As String)
Dim waiter As System.Threading.AutoResetEvent = New System.Threading.AutoResetEvent(False)
Dim client As WebClient = New WebClient()
' Specify that the DownloadDataCallback method gets called
' when the download completes.
AddHandler client.DownloadDataCompleted, AddressOf DownloadDataCallback
Dim uri as Uri = New Uri(address)
client.DownloadDataAsync(uri, waiter)
' Block the main application thread. Real applications
' can perform other tasks while waiting for the download to complete.
waiter.WaitOne()
End Sub
En el ejemplo de código siguiente se muestra una implementación de un controlador para este evento.
void DownloadDataCallback( Object^ /*sender*/, DownloadDataCompletedEventArgs^ e )
{
System::Threading::AutoResetEvent^ waiter = dynamic_cast<System::Threading::AutoResetEvent^>(e->UserState);
try
{
// If the request was not canceled and did not throw
// an exception, display the resource.
if ( !e->Cancelled && e->Error == nullptr )
{
array<Byte>^data = dynamic_cast<array<Byte>^>(e->Result);
String^ textData = System::Text::Encoding::UTF8->GetString( data );
Console::WriteLine( textData );
}
}
finally
{
// Let the main application thread resume.
waiter->Set();
}
}
private static void DownloadDataCallback(Object sender, DownloadDataCompletedEventArgs e)
{
System.Threading.AutoResetEvent waiter = (System.Threading.AutoResetEvent)e.UserState;
try
{
// If the request was not canceled and did not throw
// an exception, display the resource.
if (!e.Cancelled && e.Error == null)
{
byte[] data = (byte[])e.Result;
string textData = System.Text.Encoding.UTF8.GetString(data);
Console.WriteLine(textData);
}
}
finally
{
// Let the main application thread resume.
waiter.Set();
}
}
Private Shared Sub DownloadDataCallback(ByVal sender As Object, ByVal e As DownloadDataCompletedEventArgs)
Dim waiter As System.Threading.AutoResetEvent = CType(e.UserState, System.Threading.AutoResetEvent)
Try
' If the request was not canceled and did not throw
' an exception, display the resource.
If e.Cancelled = False AndAlso e.Error Is Nothing Then
Dim data() As Byte = CType(e.Result, Byte())
Dim textData As String = System.Text.Encoding.UTF8.GetString(data)
Console.WriteLine(textData)
End If
Finally
' Let the main application thread resume.
waiter.Set()
End Try
End Sub
Comentarios
Cautela
WebRequest
, HttpWebRequest
, ServicePoint
y WebClient
están obsoletos y no debe usarlos para el nuevo desarrollo. Use HttpClient en su lugar.
Este evento se genera cada vez que se completa una operación de descarga de datos asincrónica. Las descargas de datos asincrónicas se inician llamando a los métodos DownloadDataAsync.
El DownloadDataCompletedEventHandler es el delegado de este evento. La clase DownloadDataCompletedEventArgs proporciona al controlador de eventos datos de eventos.
Para obtener más información sobre cómo controlar eventos, vea Control y generación de eventos.