gpt4 book ai didi

c# - 下载文件与下载文件异步

转载 作者:太空狗 更新时间:2023-10-29 19:59:45 24 4
gpt4 key购买 nike

我正在使用 WebClient.DownloadFile 从 Web 服务器一次下载一个文件,但是,我想知道“线程被阻塞”是否意味着开发人员应用程序不会响应?

我试过使用 WebClient.DownloadFileAsync,但它不像 DownloadFile 那样工作,请说明,我无法确定,因为我正在从我的网络上下载文件,所以它几乎可以立即下载,在此先感谢。

PS:是的,我试过谷歌搜索和阅读,找不到我需要的答案。

最佳答案

编辑: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 会触发一个异步操作并返回一个任务,该任务将在操作结束时完成。 await 意味着等待该任务以异步方式结束,因此当您获得 DownloadFileAsync 的结果时,它之后的代码将运行。

同步 DownloadFile 将阻塞调用它的线程。如果它是 UI 线程,那么是的......你的应用程序将不会响应。如果它不是 UI 线程,那么它仍然会响应,但可扩展性会降低(这意味着它使用线程等待而不是工作,因此您的应用程序作为一个整体可以用相同数量的线程做更少的事情)

关于c# - 下载文件与下载文件异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21009162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com