使用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"我只是看它是否运行。
答案 0 :(得分:3)
此:
while (Client.IsBusy) { }
关闭UI消息循环。它会使其消耗,并且不允许处理任何其他消息。同时,该事件正在UI线程上排队,该线程被阻止。
如果您对该行发表评论并完成下载,您会看到文本框正确更新。
你应该重新思考你想要做什么。如果Client
,请考虑将while循环移至background thread