車のIDのコンポーネントIDのList<long>
を取得する非同期メソッドがあります。数百台の車のコンポーネントIDを非同期に取得したいので、以下のメソッドを記述しました。私の目標は、すべてのGetAllComponentIdsForCar
タスクの結果を実際に合計し、以下の方法からそれらを戻すことです。C#すべての終了時に非同期メソッドの結果を追加する
public async Task<List<long>> GetListOfComponentIds(List<long> carIds)
{
List<Task> tasksList = new List<Task>();
foreach (var carId in carIds)
{
Task<List<long>> getComponentIds = GetAllComponentIdsForCar(carId);
tasksList.Add(getComponentIds);
}
await Task.WhenAll(tasksList);
//List<long> sumOfAllTaskResults...or array...or something
}
これはどのようにして達成できますか?
注 - 私はangleのq.allに似たものを探しています。これは、完了したらすべてのタスク(/ promise)結果の配列を返します。
私はC#で非同期タスクの結果を得ることができましたが、それは予想されるタスクの長さを配列にすることを含み、それは恐ろしい方法です。
ここでMicrosoftのドキュメントと質問を読んでみましたが、私にはWaitAllとWhenAllの違いについての議論があります。
編集:
List<Task<List<long>>> taskList
今あなたがTask
、タイプT
の将来価値を表しTask<T>
のジェネリック版を使用するtaskList
の宣言を変更した場合
まず、返事をどうもありがとうございましたが、それ無効になっているようです(qのスクリーンショットを参照)。 – VSO
それは私の間違いでした。どうもありがとうございました。 – VSO