我有以下情況(或與異步await機制的基本誤解)。創建一個.net異步包裝到同步請求
假設您有一組需要很長時間的1-20 Web請求呼叫:findItemsByProduct()
。 你想包裝它在一個異步請求,這將能夠將所有這些調用抽象爲一個異步調用,但我似乎無法做到這一點,而不使用更多的線程。
如果我這樣做:這裏
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;
問題,該電話不在一起運行,而他們是由一個等待之一。 我希望所有的電話一起運行,並收穫結果。
僞代碼,我想代碼可以這樣運行:
forEach item {
result = item.makeWebRequest();
}
foreach item {
List.addRange(item.harvestResults);
}
我不知道如何使代碼要做到這一點,但..
你從哪裏得到了使用'Task.Factory.StartNew'的想法? –
您的數據訪問組件是否具有可用於異步實現'findItemsByProduct'的任何異步方法? –
如果你想同時運行多個操作(併發),你真的要問怎麼並行運行**,這是異步代碼的一個不同的(儘管是互補的)想法。 –