/// <summary> /// Получить данные банков с обменными курсами. /// </summary> /// <param name="requests">Список запросов.</param> /// <returns></returns> public IEnumerable <BankRatesDto> GetBankRates(IEnumerable <BankRequestDto> requsts) { // Список банков. List <BankRatesDto> banks = new List <BankRatesDto>(); // Инструмент для обработки запроса и получения данных страниц банков. var factory = new ExchangeRatesFactory(); // Получить данные банка по каждому запросу. foreach (var req in requsts) { banks.Add(factory.GetBankRates(req)); } return(banks); }
/// <summary> /// Получить данные банков с обменными курсами асинхронно. /// </summary> /// <param name="requests">Список запросов.</param> /// <returns></returns> public async Task <IEnumerable <BankRatesDto> > GetBankRatesAsync(IEnumerable <BankRequestDto> requests) { // Инструмент для обработки запроса и получения данных страниц банков. var factory = new ExchangeRatesFactory(); // Список задач. var tasks = new List <Task <BankRatesDto> >(requests.Count()); // Получить данные обменных курсов по каждому банку асинхронно. // (запустить парсинг каждого сайта параллельно) foreach (var req in requests) { tasks.Add(factory.GetBankRatesAsync(req)); } // Подождать завершения всех задач и получить спиок банков с курсами. IEnumerable <BankRatesDto> banks = await Task.WhenAll(tasks); return(banks); }