我有多个任务返回我想要使用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);