Вызов веб-сервиса асинхронно - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть метод, как показано ниже, который извлекает огромные данные о клиентах из БД через веб-сервис. Метод возвращает список клиентов, как показано ниже:

 List<Customer> customers = new List<Customer>();

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

 return customers;

Как вызвать вышеупомянутый веб-сервис в асинхронном режиме? Я не могу внести никаких изменений в код веб-службы.

Фактическая загрузка этих огромных данных приводит к ошибке времени ожидания при выполнении вызова API. Есть ли способ оптимизировать это?

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

Я вылез из-за ошибки, используя вышеуказанное решение. Поэтому я исправил это, как показано ниже:

0 голосов
/ 10 февраля 2020

Попробуйте что-то вроде этого

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;
...