Я гуглил и нашел эти ссылки 1 , 2 . Кажется, что WebRequest
не может выполнять запросы параллельно. Также я пытался отправлять несколько запросов параллельно, используя WebRequest
, и по некоторым причинам WebRequest
не делал запросы параллельно.
Но когда я использовал класс HttpClient
, он делал запросы параллельно. Попробуйте использовать HttpClient
вместо WebRequest
, поскольку Microsoft рекомендует .
Итак, во-первых, вы должны использовать HttpClient
для отправки веб-запроса.
Затем вы можете использовать следующий подход для параллельной загрузки страниц:
public static IList<AdModel> DownloadAllPages()
{
int[] pageNumbers = getPageNumbers();
// Array of tasks that download data from the pages.
Task<IList<AdModel>>[] tasks = new Task<IList<AdModel>>[pageNumbers.Length];
// This loop lauches download tasks in parallel.
for (int i = 0; i < pageNumbers.Length; i++)
{
// Launch download task without waiting for its completion.
tasks[i] = LocalBitcoins_buy(pageNumbers[i]);
}
// Wait for all tasks to complete.
Task.WaitAll(tasks);
// Combine results from all tasks into a common list.
return tasks.SelectMany(t => t.Result).ToList();
}
Конечно, вы должны добавить обработку ошибок в этот метод.