c #.net 4.5 асинхронный/многопоточный?

Я пишу консольное приложение C #, которое собирает данные с веб-страниц.

Это приложение будет просматривать около 8000 веб-страниц и очищать данные (одного и того же формата данных на каждой странице ).

У меня это работает прямо сейчас без асинхронных методов и без многопоточности.

Однако мне нужно, чтобы это было быстрее. Он использует только около 3% -6% процессора, я думаю, потому что он тратит время на ожидание загрузки html. (WebClient.DownloadString (URL-адрес))

Это основной поток моей программы

DataSet alldata;

foreach(var url in the8000urls)
{
    // ScrapeData downloads the html from the url with WebClient.DownloadString
    // and scrapes the data into several datatables which it returns as a dataset.
    DataSet dataForOnePage = ScrapeData(url);

    //merge each table in dataForOnePage into allData
}

// PushAllDataToSql(alldata);

Я пытался использовать несколько потоков, но не уверен, как правильно начать. Я использую.net 4.5, и я понимаю, что асинхронность и ожидание в 4.5 сделаны, чтобы упростить программирование, но я все еще немного потерян.

Моя идея заключалась в том, чтобы просто продолжать создавать новые асинхронные потоки для этой строки

DataSet dataForOnePage = ScrapeData(url);

. а затем, когда каждый закончит, запустите

//merge each table in dataForOnePage into allData

Может ли кто-нибудь указать мне правильное направление, как сделать эту строку асинхронной в.net 4.5 c #, а затем завершить мой метод слияния?

Спасибо.

Изменить :Вот мой метод ScrapeData:

public static DataSet GetProperyData(CookieAwareWebClient webClient, string pageid)
{
    var dsPageData = new DataSet();

    // DOWNLOAD HTML FOR THE REO PAGE AND LOAD IT INTO AN HTMLDOCUMENT
    string url = @"https://domain.com?&id=" + pageid + @"restofurl";
    string html = webClient.DownloadString(url);
    var doc = new HtmlDocument();
    doc.LoadHtml(html );

    // A BUNCH OF PARSING WITH HTMLAGILITY AND STORING IN dsPageData 
    return dsPageData ;
}
28
задан Noctis 23 July 2014 в 00:54
поделиться