WebClient.DownloadProgressChanged never gets called

后端 未结 2 482
我寻月下人不归
我寻月下人不归 2021-01-02 14:10

I added an event handler to the WebClient\'s DownloadProgressChanged event, but it never seems to fire. The file successfully downloads, but without having its

2条回答
  •  孤街浪徒
    2021-01-02 14:32

    client.DownloadFile(url, savepath);
    

    You have to use the async version to download a file, currently you use the blocking, synchronous version.

    From the msdn docs for WebClient.DownloadProgressChanged:

    Occurs when an asynchronous download operation successfully transfers some or all of the data.

    In your case that would be:

    client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
    client.DownloadFileAsync (url, savepath);
    

    Since your method does not directly return any result, this refactoring shouldn't be a problem, note though that the download most likely has not been completed by the time the method returns to the caller.

提交回复
热议问题