异步调用 Web 服务



我有一个如下方法,它通过网络服务从数据库中获取大量客户数据。该方法返回客户列表,如下所示:

List<Customer> customers = new List<Customer>();
foreach (CustomerSummary cs in lastModifiedCustomers)
{
customers.Add(customerService.CallService(x => x.GetCustomerByKey(cs.Key, context)));
}
return customers;

如何以异步方式调用上面的网络服务?我无法对网络服务代码进行任何更改。

实际上,获取这些庞大的数据会在进行API调用时出现超时错误。有没有优化的方法可以做到这一点?

试试这样的事情

int size=1000;
int iterations = (lastModifiedCustomers.Items.Count/size)+1;
List<Customer> customers = new List<Customer>();
for(int i=1;i<iterations;i++)
{
foreach (CustomerSummary cs in lastModifiedCustomers.GetRange(i==1?i:(i-1)*size+1,size))
{
customers.Add(customerService.CallService(x => x.GetCustomerByKey(cs.Key, context)));
}
}
return customers;

通过使用上述解决方案,我得到了越界错误。所以我更正如下:

int size=100;
List<Customer> customers = new List<Customer>();
for(int i=0;i<iterations;i+=size)
{
foreach (CustomerSummary cs in lastModifiedCustomers.GetRange(i,Math.Min(size,lastModifiedCustomers.Count-i)))
{
customers.Add(customerService.CallService(x => x.GetCustomerByKey(cs.Key, context)));
}
}
return customers;

相关内容

  • 没有找到相关文章

最新更新