C# ограничивает количество задач, выполняемое вашей программа по количеству процессоров вашего компьютера (это не conincidence).
Вы можете камыш более об ограничении параллелизма здесь: https://msdn.microsoft.com/en-us/library/ee789351(v=vs.100).aspx
в основном вам нужно реализовать свою собственную задачу Schedular только запустить 10 задач одновременно.
Таким образом вы можете запланировать неограниченное количество задач, но TaskScheduler запускает только 10 за раз.
Вариант 2
- , чтобы начать 10 задач
- подстерегающие Любой (пока не будет сделано)
- расписание новой задачи. и ждите снова, пока не будет сделано.
Но помните эту опцию 2. Выполняется только количество заданий как количество процессоров, которые у вас есть. Поскольку это задание по умолчанию, выполняются запланированные задачи. (Вы на самом деле запланировать задачу всякий раз, когда вы говорите Tas.Run(...)
вместо прямого запуска.
Большие задачи
Если у вас есть большие задачи и 1 нить уже завершена перед остальными (я прочитал из комментариев). Затем разделите ваши большие задачи сводятся к небольшим задачам (или создавайте новые задачи внутри задачи). Затем эти новые задачи будут запланированы и пройдут по всем задачам.
Кто может дать мне идею? – BOB
Если бы я просто мог понять, что вы пытаюсь выполнить .. Не могли бы вы объяснить немного больше? –
спасибо peter, например: у меня более 1000 сайтов в (dataGridView1.Rows [index2] .Cells [0] .Value.) Я хочу получить все эти ссылки веб-сайта, использовать задачу, чтобы сохранить поток для реализации. если у меня есть 10 потоков, поток num02 завершен, тогда только 9 потоков работают. как все еще можно сохранить 10 потоков, и автоматически взять num11 из datagridview. – BOB