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

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

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

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

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

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

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


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

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

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы