使用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/

10-13 07:46