加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 从Task.WhenAll获取结果

发布时间:2020-12-15 08:39:20 所属栏目:百科 来源:网络整理
导读:我有多个任务返回我想要使用Task.WhenAll调用的相同对象类型(new [] {t1,t2,t3});并阅读结果. 当我尝试使用时 TaskListstring all = await Task.WhenAll(new Task[] { t,t2 }).ConfigureAwait(false); 我收到编译器错误 Cannot implicitly convert type ‘vo
我有多个任务返回我想要使用Task.WhenAll调用的相同对象类型(new [] {t1,t2,t3});并阅读结果.

当我尝试使用时

Task<List<string>> all = await Task.WhenAll(new Task[] { t,t2 }).ConfigureAwait(false);

我收到编译器错误

Cannot implicitly convert type ‘void’ to
'System.Threading.Tasks.Task<System.Collections.Generic.List<string>>

这两个任务都是类似的调用方法.

private Task<List<string>> GetFiles(string path)
{
    files = new List<string>();
    return  Task.Run(() =>
    {
       //remove for brevity 
        return files;
    });
}

解决方法

看起来你正在使用不返回值的WaitAll()重载.如果进行以下更改,则应该可以正常工作.
List<string>[] all = await Task.WhenAll(new Task<List<string>>[] { t,t2 })
                               .ConfigureAwait(false);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读