WebClient.DownloadProgressChanged イベント

定義

非同期ダウンロード操作で、データの一部またはすべてが正常に転送された場合に発生します。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;
public event System.Net.DownloadProgressChangedEventHandler DownloadProgressChanged;
member this.DownloadProgressChanged : System.Net.DownloadProgressChangedEventHandler 
Public Custom Event DownloadProgressChanged As DownloadProgressChangedEventHandler 
Public Event DownloadProgressChanged As DownloadProgressChangedEventHandler 

イベントの種類

DownloadProgressChangedEventHandler

次のコード例は、イベントのイベントハンドラーを設定する方法を示して DownloadProgressChanged います。The following code example demonstrates setting an event handler for the DownloadProgressChanged event.

// Sample call : DownLoadFileInBackground4 ("http://www.contoso.com/logs/January.txt");
void DownLoadFileInBackground4( String^ address )
{
   WebClient^ client = gcnew WebClient;
   Uri ^uri = gcnew Uri(address);

   // Specify a DownloadFileCompleted handler here...

   // Specify a progress notification handler.
   client->DownloadProgressChanged += gcnew DownloadProgressChangedEventHandler( DownloadProgressCallback4 );
   
   client->DownloadFileAsync( uri, "serverdata.txt" );
}

static void DownloadProgressCallback4(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);
}
// Sample call : DownLoadFileInBackground4 ("http://www.contoso.com/logs/January.txt");
public static void DownLoadFileInBackground4(string address)
{
    WebClient client = new WebClient();
    Uri uri = new Uri(address);

    // Specify a DownloadFileCompleted handler here...

    // Specify a progress notification handler.
    client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressCallback4);

    client.DownloadFileAsync(uri, "serverdata.txt");
}

private static void DownloadProgressCallback4(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);
}
' Sample call : DownLoadFileInBackground4 ("http://www.contoso.com/logs/January.txt");
Public Shared Sub DownLoadFileInBackground4(ByVal address As String)

    Dim client As WebClient = New WebClient()

    ' Specify a DownloadFileCompleted handler here...

    '  Specify a progress notification handler.
    AddHandler client.DownloadProgressChanged, AddressOf DownloadProgressCallback4

    Dim uri as Uri = New Uri(address)
    client.DownloadFileAsync(uri, "serverdata.txt")

End Sub

Private Shared Sub DownloadProgressCallback4(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

注釈

このイベントは、非同期のダウンロードが進行するたびに発生します。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.

MethodMethod 説明Description
DownloadDataAsync リソースからデータをダウンロードし、 Byte 呼び出し元のスレッドをブロックせずに配列を返します。Downloads data from a resource and returns a Byte array, without blocking the calling thread.
DownloadFileAsync 呼び出し元のスレッドをブロックせずに、リソースからローカルファイルにデータをダウンロードします。Downloads data from a resource to a local file, without blocking the calling thread.
OpenReadAsync 呼び出し元のスレッドをブロックせずに、リソースからのデータを返します。Returns the data from a resource, without blocking the calling thread.

は、 DownloadProgressChangedEventHandler このイベントのデリゲートです。The DownloadProgressChangedEventHandler is the delegate for this event. クラスは、イベント DownloadProgressChangedEventArgs データを含むイベントハンドラーを提供します。The DownloadProgressChangedEventArgs class provides the event handler with event data.

イベントを処理する方法の詳細については、次を参照してください。処理とイベントの発生します。For more information about how to handle events, see Handling and Raising Events.

注意

サーバーによってファイルサイズが送信されなかったため、パッシブ FTP ファイル転送の進行状況は常に0になります。A passive FTP file transfer will always show a progress percentage of zero, since the server did not send the file size. 進行状況を表示するには、仮想メソッドをオーバーライドして FTP 接続をアクティブに変更し GetWebRequest(Uri) ます。To show progress, you can change the FTP connection to active by overriding the GetWebRequest(Uri) virtual method:

internal class MyWebClient : WebClientProtocol
{
    protected override WebRequest GetWebRequest(Uri address)
    {
        FtpWebRequest req = (FtpWebRequest)base.GetWebRequest(address);
        req.UsePassive = false;
        return req;
    }
}

適用対象