private Queue<string> _downloadUrls = new Queue<string>();
private void downloadFile(IEnumerable<string> urls)
{
foreach (var url in urls)
{
_downloadUrls.Enqueue(url);
}
DownloadFile();
}
private async Task DownloadFile()
{
if (_downloadUrls.Any())
{
WebClient client = new WebClient();
client.DownloadProgressChanged += ProgressChanged;
client.DownloadFileCompleted += Completed;
var url = _downloadUrls.Dequeue();
string FileName = url.Substring(url.LastIndexOf("/") + 1,
(url.Length - url.LastIndexOf("/") - 1));
await client.DownloadFileAsync(new Uri(url), "C:\\Test4\\" + FileName);
return;
}
}
错误在线:
await client.DownloadFileAsync(new Uri(url), "C:\\Test4\\" + FileName);
我该如何解决错误? 为什么会这样? 我提出了我认为的所有细节。
我添加了剩余的代码,可能需要它。
答案 0 :(得分:10)
WebClient.DownloadFileAsync
是一个基于事件的API,早于Tasks和async / await。您将要等待WebClient.DownloadFileTaskAsync
。
答案 1 :(得分:2)
await运算符应用于异步方法中的任务,这意味着您可以等待返回任务的方法。
WebClient.DownloadFileAsync
不会返回任务,WebClient.DownloadFileTaskAsync
会这样做。