Как использовать 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()) { } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д