C#downloadasync等待下载完成

时间:2014-02-17 13:57:24

标签: c#

是否可以等待下载完成然后执行下一行代码?

WebClient wb = new WebClient();
wb.DownloadFileAsync(new Uri("url"), @"c:\tmp\file.exe");
wb.DownloadProgressChanged += wb_DownloadProgressChanged;
wb.DownloadFileCompleted += wb_DownloadFileCompleted;
//Code to run after download finished...

我知道我可以使用wb.DownloadFile,但不会就下载百分比提供反馈。

2 个答案:

答案 0 :(得分:4)

如果您使用的是.net 4.5,则可以使用新的async/await关键字和DownloadFileTaskAsync方法

async void DownloadSomeFile()
{
   WebClient wb = new WebClient();
   wb.DownloadProgressChanged += wb_DownloadProgressChanged;
   wb.DownloadFileCompleted += wb_DownloadFileCompleted;

   await wb.DownloadFileTaskAsync(new Uri("url"), @"c:\tmp\file.exe");

   //Do the other work here
}

答案 1 :(得分:1)

是的,您可以使用.Net 4.5中引入的新await关键字以及异步方法。

请参阅此link,了解如何让代码等待下载完成的MSDN演示。