使用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”的代码,我只是看它是否运行。 最佳答案
这个:
while (Client.IsBusy) { }
捆绑UI消息循环。它保持消耗状态,并且不允许处理其他任何消息。同时,事件正在UI线程上排队,该线程已被阻止。
如果您对该行进行注释并且下载完成,您将看到文本框正确更新。
您应该重新考虑您要做什么。如果为
Client
,请考虑将while循环移至background thread关于c# - WebClient.DownloadProgressChanged不会触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28463861/