У меня есть страница, которая должна объединить данные из четырех разных веб-записей в один список элементов. В настоящее время я запускаю их последовательно, добавляя один список, а затем привязывая этот список к моему ретранслятору.несколько веб-запросов асинхронно в asp.net?
Однако, я хотел бы, чтобы асинхронно вызывать эти четыре веб-запроса, чтобы они могли работать одновременно и сохранять время загрузки. К сожалению, все асинхронные учебники и статьи, которые я видел, касаются одного запроса, используя обработчик, чтобы продолжить обработку.
Как я могу выполнить четыре (это может даже увеличиться!) Одновременно, имея в виду, что каждый результат должен быть подан в один список?
большое спасибо!
EDIT: упрощенный пример того, что я делаю:
var itm1 = Serialize(GetItems(url1));
list.AddRange(itm1);
var itm2 = Serialize(GetItems(url2));
list.AddRange(itm2);
string GetItems(string url)
{
var webRequest = WebRequest.Create(url) as HttpWebRequest;
var response = webRequest.GetResponse() as HttpWebResponse;
string retval;
using (var sr = new StreamReader(response.GetResponseStream()))
{ retval = sr.ReadToEnd(); }
return retval;
}
У вас есть код, который вы можете опубликовать, чтобы показать нам, как вы в настоящее время загружаете эти запросы? –
добавил упрощенный пример того, как я это делаю. Serialize() просто преобразует json-строку в класс, указанный для коллекции List. – SelAromDotNet
Я думаю вместо того, чтобы запускать запрос асинхронно с BeginGetResponse, который, кажется, ничего мне не спасает, мне нужно запустить метод GetItems асинхронно, поэтому что 4 запроса могут выполняться одновременно. Я думал об использовании потоков до и теперь, когда я смотрю на свою проблему, похоже, что лучше всего сделать это каждый выпуск GetItems в отдельном потоке, но как его синхронизировать, чтобы приложение запускало их одновременно, затем агрегирует все их результаты? – SelAromDotNet