次の状況があります (または async await メカニズムに関する基本的な誤解)。
時間がかかる 1 ~ 20 の Web 要求呼び出しのセットがあるとしますfindItemsByProduct()
。これらすべての呼び出しを 1 つの非同期呼び出しに抽象化できる非同期要求でそれをラップしたいのですが、より多くのスレッドを使用しないとそれを実行できないようです。
私がやっている場合:
int total = result.paginationOutput.totalPages;
for (int i = 2; i < total + 1; i++)
{
await Task.Factory.StartNew(() =>
{
result = client.findItemsByProduct(i);
});
newList.AddRange(result.searchResult.item);
}
}
return newList;
ここでの問題は、呼び出しが一緒に実行されず、1 つずつ待機していることです。すべての呼び出しを一緒に実行して、結果を収集したいと思います。
疑似コードとして、コードを次のように実行したいと思います。
forEach item {
result = item.makeWebRequest();
}
foreach item {
List.addRange(item.harvestResults);
}
私はそれを行うためのコードを作成する方法がわかりません..