我有多个任务返回相同的对象类型,我想使用Task.WhenAll(new[]{t1,t2,t3});
调用并读取结果。从Task.WhenAll获得结果
当我尝试使用
Task<List<string>> all = await Task.WhenAll(new Task[] { t, t2 }).ConfigureAwait(false);
我得到一个编译错误
无法隐式转换类型 '无效' 到
'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;
});
}
能否请您澄清[WhenAll]什么样的MSDN的一部分(https://msdn.microsoft.com/en-us/library/hh194766%28v=vs.110%29.aspx)不明确?会使问题更容易回答。 –
其实没有一篇文章不清楚。什么是不明确的是这个空白来自哪里。 – user3373870
我看到了 - 正如Mike Hixson指出的那样,您有'Task'(任务不返回值)列表而不是'Task' - 因此等待'void'中的结果。通常你只是不使用快捷数组语法指定类型来避免这样的问题 - “ask.WhenAll(new [] {t,t2})...'。或者正确使用类型化的列表/任务数组,如MSDN示例 - 'var tasks = new List >();'。 –