WebClient::DownloadProgressChanged Event
Occurs when an asynchronous download operation successfully transfers some or all of the data.
Assembly: System (in System.dll)
This event is raised each time an asynchronous download makes progress. This event is raised when downloads are started using any of the following methods.
Method | Description |
|---|---|
Downloads data from a resource and returns a Byte array, without blocking the calling thread. | |
Downloads data from a resource to a local file, without blocking the calling thread. | |
Returns the data from a resource, without blocking the calling thread. |
The DownloadProgressChangedEventHandler is the delegate for this event. The DownloadProgressChangedEventArgs class provides the event handler with event data.
For more information about handling events, see NIB: Consuming Events.
Note |
|---|
A passive FTP file transfer will always show a progress percentage of zero, since the server did not send the file size. 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;
}
}
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" ); }
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); }
Available since 2.0
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
