我有以下情况(或与异步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'的任何异步方法? –
如果你想同时运行多个操作(并发),你真的要问怎么并行运行**,这是异步代码的一个不同的(尽管是互补的)想法。 –