【发布时间】:2017-05-24 14:01:19
【问题描述】:
我试图找到解决方案,但找不到。这就是我在这里问的原因。 :)
我有一个任务列表,它有两个项目
List<Task<int>> tasks = new List<Task<int>>();
tasks.Add(Task.FromResult(1));
tasks.Add(Task.FromResult(2));
当我调用 await Task.WhenAll(tasks) 时,它返回 int[] 但我希望它应该返回 List<int>。如下:
List<int> result = await Task.WhenAll(tasks);
得到结果后,我想在列表中添加新项目。
【问题讨论】:
-
你为什么要那个?
-
得到结果后,我想在列表中添加新项目。
-
如何将
array转换为List,使用ToList()调用,简单 -
我投了反对票,因为在编写代码或调试时没有进行任何验证,如果
Task返回类型 T 并且给定IEnumerable<Task<T>>中的所有任务都具有相同的类型,那么总是 @ 987654329@,将其解包为T[],现在你的问题是如何将T[]翻译成List<T>,在上面你提到这不起作用await Task.WhenAll(tasks).ToList(),你真的期望Task.ToList( ) 工作? -
我认为这里的想法是省略
await关键字。如果我有一个返回Task.WhenAll的Task<IEnumerable<T>方法,它将不起作用,因为Task.WhenAll返回Task<T[]>。当然,您可以等待然后将方法标记为异步,但这效率较低,因为您打开任务只是为了再次包装它。不过,似乎没有办法解决这个问题。
标签: c# asp.net linq task-parallel-library task