Цикл в несколько потоков для работы с множеством страниц HTML - C#

Узнай цену своей работы

Формулировка задачи:

Есть цикл в нем самая долгоиграющая задача выполнение функции GetContentCurentPage, суть сводится к тому что-бы загрузить HTML страницу и выбрать из ее значения. Страниц большое количество около 2000. Вопрос можно ли как-то выполнять этот цикл в несколько потоков?
while (strPageParce <= pageCount)
{
    List<string> temps = new List<string>();
    temps.Clear();
    temps.AddRange(Parse.GetContentCurentPage(strPageParce));
 
    foreach (string temp in temps)
    {
        query = "INSERT INTO 'testtable' ('value') VALUES ('" + temp + "');";
        command = new SQLiteCommand(query, connection);
        command.ExecuteNonQuery();
    }
    strPageParce++;
}

Решение задачи: «Цикл в несколько потоков для работы с множеством страниц HTML»

textual
Листинг программы
Parallel.For(0, pageCount /*только + 1 наверно, если у вас там <= */, page => 
{
    List<string> temps = new List<string>();
    temps.Clear();
    temps.AddRange(Parse.GetContentCurentPage(page));
 
    foreach (string temp in temps)
    {
        var query = "INSERT INTO 'testtable' ('value') VALUES ('" + temp + "');"; // переменные должны находится внутри Action, иначе будет совместный доступ из разных потоков
        var command = new SQLiteCommand(query, connection);
        command.ExecuteNonQuery();
    }
});

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


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

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

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