[英]calling async method in parallel c#
我有一個接受int
輸入並返回Task<Dictionary<DateTime, HistPrice>>
public static async Task<Dictionary<DateTime, HistPrice>> GetPrices(int seriesId) {
...
return Dictionary<DateTime, HistPrice>;
}
現在,我要為值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);
直到這里一切都工作正常,問題出在從任務中提取結果。 我試圖提取結果像
foreach(var ta in tasks) {
var res = await ta;//error in this line
}
但它說
CS0815無法將void分配給隱式類型的變量
我在這里想念什么?
代替
var tasks = new List<Task>();
使用此代替:
var tasks = new List<Task<Dictionary<DateTime, HistPrice>>>();
或用少量的LINQ替換它和您的foreach循環 ,從而使您不必擔心類型。
var tasks = seriesIdDist.Select( n => GetPrices(n) ).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.