WebClient.DownloadProgressChanged不会触发

时间:2015-02-11 20:28:12

标签: c# .net download webclient webclient-download

使用C#在Visual Studio中进行一些编程,我尝试下载文件并将进度链接到ProgressBar。当我在Visual Basic中使用它时它工作得非常好,但是当我尝试在C#中执行它时,Client.DownloadProgressChanged事件就不会触发。

System.Net.WebClient Client = new System.Net.WebClient();
Client.DownloadProgressChanged += Client_DownloadProgressChanged;
Client.DownloadFileAsync(new Uri(url), filepath + filename);
while (Client.IsBusy) { }

Client_DownloadProgressChanged中唯一的一项代码是将TextBox的值更改为" Test1"我只是看它是否运行。

1 个答案:

答案 0 :(得分:3)

此:

while (Client.IsBusy) { }

关闭UI消息循环。它会使其消耗,并且不允许处理任何其他消息。同时,该事件正在UI线程上排队,该线程被阻止。

如果您对该行发表评论并完成下载,您会看到文本框正确更新。

你应该重新思考你想要做什么。如果Client,请考虑将while循环移至background thread