c# - 为什么我收到错误 Cannot await 'void' ?

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

我该如何解决这个错误? 为什么会发生? 我给出了我认为的所有细节。

我添加了可能需要的其余代码。

最佳答案

WebClient.DownloadFileAsync 是一种基于事件的 API,早于任务和异步/等待。您需要等待 WebClient.DownloadFileTaskAsync

关于c# - 为什么我收到错误 Cannot await 'void' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41408673/

相关文章:

c# - C#中throwing方法获取方法参数

winforms - 让 PS 脚本等待 NotifyIcon 单击,然后显示消息框并退出

c# - 如何在 DataGridView 中格式化带有最大值和最小值的小数列?

javascript - onclick 事件不工作 asp.net

c# - onchange = "Form.submit() 仅适用于我的下拉菜单中的第一个子下拉菜单

c# - 在 .NET winform 中重现表格模型

c# - C# 交互窗口可以与我的代码交互吗?

winforms - .NET将自定义属性添加到Winform控件

c# - 变量名 '@' 已经声明。变量名称在查询批处理或存储过程中必须是唯一的

c# - 获取泛型参数的类型