我正在使用 WebClient.DownloadFile 从 Web 服务器一次下载一个文件,但是,我想知道“线程被阻止”开发人员是否意味着应用程序不会响应?
我尝试使用 WebClient.DownloadFileAsync 但它不像 DownloadFile 那样工作,请澄清,我无法判断,因为我正在从网络下载文件,所以它几乎可以立即下载,提前致谢。
PS:是的,我尝试谷歌搜索和阅读,找不到我需要的答案。
Edit: WebClient.DownloadFileAsync
以“Async”结尾,但不返回任务。它是的一部分Event-based Asynchronous Pattern
所以我的回答不相关。这是:您需要订阅WebClient.DownloadFileCompleted
事件来了解异步操作何时完成。例如:
var client = new WebClient();
var uri = new Uri(address);
client.DownloadFileCompleted += (sender, e) => Console.WriteLine("Finished");
client.DownloadFileAsync(uri, "Hamsters.txt");
原答案:WebClient.DownloadFileAsync
返回您需要等待的任务。像这样:
await WebClient.DownloadFileAsync(...)
DownloadFileAsync
is 触发异步操作并返回一个任务,该任务将在操作结束时完成。await
意味着等待该任务以异步方式结束,因此当您获得结果时,它后面的代码将运行DownloadFileAsync
.
共时性DownloadFile
将阻塞调用它的线程。如果是 UI 线程,那么是的...您的应用程序将不会响应。如果它不是 UI 线程,那么它仍然会响应,但可扩展性会较差(这意味着它使用线程来等待而不是工作,因此您的应用程序作为一个整体可以使用相同数量的线程执行更少的操作)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)