Pரத*_*ீப் 0 c# methods asynchronous task async-await
我有一个接受int输入和返回的方法Task<Dictionary<DateTime, HistPrice>>
public static async Task<Dictionary<DateTime, HistPrice>> GetPrices(int seriesId) {
...
return Dictionary<DateTime, HistPrice>;
}
Run Code Online (Sandbox Code Playgroud)
现在我想并行调用上面的方法来获取值1,2,3,4,5,6,7,8的列表.
List<int> seriesIdDist = new List<int>(new int[] { 1, 2, 3, 4, 5, 6, 7, 8 });
var tasks = new List<Task>();
foreach(var t in seriesIdDist) {
tasks.Add(GetPrices(t));
}
await Task.WhenAll(tasks);
Run Code Online (Sandbox Code Playgroud)
直到这里一切正常,问题在于从任务中提取结果.我试着像提取结果一样
foreach(var ta in tasks) {
var res = await ta;//error in this line
}
Run Code Online (Sandbox Code Playgroud)
但它说
CS0815无法为隐式类型变量赋值void
我在这里错过了什么?
代替
var tasks = new List<Task>();
Run Code Online (Sandbox Code Playgroud)
请改用:
var tasks = new List<Task<Dictionary<DateTime, HistPrice>>>();
Run Code Online (Sandbox Code Playgroud)
或者用一点LINQ 替换它和你的foreach循环,这样你就不用担心类型了.
var tasks = seriesIdDist.Select( n => GetPrices(n) ).ToList();
Run Code Online (Sandbox Code Playgroud)