Как использовать 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())
    {
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы