繁体   English   中英

如何将 Webclient.DownloadFileAsync 包装成可等待的方法?

[英]How to wrap Webclient.DownloadFileAsync into an awaitable method?

我想将实际上是非阻塞的WebClient.DownloadFileAsync方法包装到一个返回 Task 的方法中,并且可以等待直到下载完成

我理解订阅 DownloadFileCompleted 事件背后的逻辑,正如这里(以及许多其他帖子)所解释的,但我想将它包装成更用户友好的东西。 而且我对异步编程的了解也很肤浅。

我能想到的最好的方法是将 DownloadFile 方法(同步)包装到 Task 中并返回它,但我读过很多次将同步方法包装到异步方法上不是一个好习惯

return Task.Run(() =>client.DownloadFile(fileUri, localPath));

这实际上是我第一次遇到不可等待的异步方法,是否有这样的想法?

谢谢

根据上面@JonSkeet 的评论,答案是:

  • 早在实现 await/async 之前就已经考虑过方法 DownloadFileAsync
  • 我正在寻找的方法称为DownloadFileTaskAsync ,一个简单的异步文件下载器,无需重写包装器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM