Как использовать WebClient для параллельной загрузки страниц - C#
Формулировка задачи:
Время доброе.
Кто может подсказать, как использовать WebClient для параллельной загрузки страниц.
При данном способе время выполнения примерно 25 минут.
Если запустить одновременно 2 программы (в каждой закачивается только один сайт) то общее время выполнения 16 минут.
И, судя по загруженности канала во втором случаи, трафик потребляется в 2 раза больше, чем в первом (5 Мбит/с против 10 Мбит/с)
Листинг программы
- class MainDownloader
- {
- private void StartMainDownloader()
- {
- Parallel.Invoke(
- () =>
- {
- string webPath = "Path_1";
- Downloader DL_1 = new Downloader(webPath);
- DL_1.Start();
- },
- () =>
- {
- string webPath = "Path_2";
- Downloader DL_2 = new Downloader(webPath);
- DL_2.Start();
- }
- );
- }
- }
- class Downloader
- {
- private string webPath;
- private List<string> MyList;
- void Downloader(string newPath)
- {
- webPath = newPath;
- }
- public void Start()
- {
- WebClient wClient = new WebClient();
- MyList = new List<string>;
- string page;
- for (int i=1; i<=1000; i++)
- {
- page = wClient.DownloadString("http://www."+webPath+".com/Page_nummer_"+i+".html");
- MyList.add(page);
- }
- }
- }
Решение задачи: «Как использовать WebClient для параллельной загрузки страниц»
textual
Листинг программы
- await Task.Factory.StartNew(() =>
- {
- using(WebClient wClient = new WebClient())
- {
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д