c# – 从Task.WhenAll获取结果

前端之家收集整理的这篇文章主要介绍了c# – 从Task.WhenAll获取结果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有多个任务返回我想要使用Task.WhenAll调用的相同对象类型(new [] {t1,t2,t3});并阅读结果.

当我尝试使用时

  1. 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>>

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

  1. private Task<List<string>> GetFiles(string path)
  2. {
  3. files = new List<string>();
  4. return Task.Run(() =>
  5. {
  6. //remove for brevity
  7. return files;
  8. });
  9. }

解决方法

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

猜你在找的C#相关文章