Да просто. формируешь список строк (перед запуском потоков) PHP: List<string> list = new List<string>(); for (int i = 1; i < 12; i++) { for (int j = 1; j < 31; j++) { for (int k = 1; k < 35; k++) { list.Add(new StringBuilder(i).Append(j).Append(k).ToString()); } } } запросы выполняешь в потоках. Перед выполнением запроса забираешь строку из списка PHP: var s = String.Empty; lock(list) { s = list[0]; list.RemoveAt(0); } // тут запрос и так пока не кончатся строки в списке ЗЫ тут много чего пропущено но думаю общий смысл ясен По запуску и синхронизации потоков курить мсдн
Ну блин это неважно все. Смысл в том что для потоков формируется список задач в виде определенной коллекции а потоки разбирают эти задачи. Когда задачи кончились - потоки завершаются. А список задач ты можешь формировать как тебе угодно. Главное что циклы выполняются не в потоках, как я понял именно с этим у тебя проблемы. Если тебя смущает список строк, то ты запросто можешь сделать коллекцию на своем типе. Например, это может быть класс содержащий дату, номер страницы и т.п.