为什么我得到错误不能等待'无效'?

时间:2016-12-31 13:23:19

标签: c# .net winforms

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);

我该如何解决错误? 为什么会这样? 我提出了我认为的所有细节。

我添加了剩余的代码,可能需要它。

2 个答案:

答案 0 :(得分:10)

WebClient.DownloadFileAsync是一个基于事件的API,早于Tasks和async / await。您将要等待WebClient.DownloadFileTaskAsync

答案 1 :(得分:2)

await运算符应用于异步方法中的任务,这意味着您可以等待返回任务的方法。

WebClient.DownloadFileAsync 会返回任务,WebClient.DownloadFileTaskAsync会这样做。