簡體   English   中英

在並行C#中調用異步方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM