Цикл в несколько потоков для работы с множеством страниц 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();
}
});