c# – 从Task.WhenAll获取结果

前端之家收集整理的这篇文章主要介绍了c# – 从Task.WhenAll获取结果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有多个任务返回我想要使用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);

猜你在找的C#相关文章