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