Цикл в несколько потоков для работы с множеством страниц 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();
- }
- });
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д