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