WebClient.DownloadProgressChanged Zdarzenie

Definicja

Występuje, gdy asynchroniczne operacje pobierania pomyślnie przetransferuje niektóre lub wszystkie dane.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 Event DownloadProgressChanged As DownloadProgressChangedEventHandler 

Przykłady

Poniższy przykład kodu demonstruje ustawienie programu obsługi zdarzeń dla tego zdarzenia.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

Poniższy przykład kodu pokazuje implementację programu obsługi dla tego zdarzenia.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

Uwagi

To zdarzenie jest wywoływane za każdym razem, gdy pobieranie asynchroniczne powoduje postęp.This event is raised each time an asynchronous download makes progress. To zdarzenie jest zgłaszane, gdy rozpocznie się pobieranie przy użyciu dowolnej z poniższych metod.This event is raised when downloads are started using any of the following methods.

MetodaMethod OpisDescription
DownloadDataAsync Pobiera dane z zasobu i zwraca tablicę Byte, bez blokowania wątku wywołującego.Downloads data from a resource and returns a Byte array, without blocking the calling thread.
DownloadFileAsync Pobiera dane z zasobu do pliku lokalnego bez blokowania wątku wywołującego.Downloads data from a resource to a local file, without blocking the calling thread.
OpenReadAsync Zwraca dane z zasobu bez blokowania wątku wywołującego.Returns the data from a resource, without blocking the calling thread.

DownloadProgressChangedEventHandler jest delegatem dla tego zdarzenia.The DownloadProgressChangedEventHandler is the delegate for this event. Klasa DownloadProgressChangedEventArgs udostępnia obsługę zdarzeń z danymi zdarzenia.The DownloadProgressChangedEventArgs class provides the event handler with event data.

Aby uzyskać więcej informacji o sposobie obsługi zdarzeń, zobacz Obsługa iwywoływanie zdarzeń.For more information about how to handle events, see Handling and Raising Events.

Uwaga

W przypadku pasywnego transferu plików FTP będzie zawsze wyświetlany procent postępu równy zero, ponieważ serwer nie wysłał rozmiaru pliku.A passive FTP file transfer will always show a progress percentage of zero, since the server did not send the file size. Aby wyświetlić postęp, można zmienić połączenie FTP na aktywne poprzez zastąpienie metody wirtualnej GetWebRequest: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;  
    }  
}  

Dotyczy