Я рекомендовал бы с Threadpool. Достаточно легко работать, так как он имеет несколько преимуществ:
«Пул потоков предоставит преимущества для частых и относительно коротких операций Повторное использование потоков, которые уже созданы вместо создания новых (дорогостоящий процесс) Регулирование скорости создания потоков при появлении запросов на новые рабочие элементы (я считаю, что это только в .NET 3.5)
Если вы ставите в очередь 100 задач пула потоков, он будет использовать столько потоков, сколько имеет уже созданы для обслуживания этих запросов (например, например, 10). Пул потоков будет часто проверять (я считаю, каждые 500 мс в 3.5 SP1), и если есть задачи с постами, он будет создавать новый поток. Если ваши задачи быстрые, то число новых потоков будет небольшим, и повторное использование 10 или около того потоков для коротких задач будет быстрее, чем создание 100 потоков вверх.
Если в вашей рабочей нагрузке постоянно поступает большое количество запросов пула потоков, тогда пул потоков настроится на вашу рабочую нагрузку, создав больше потоков в пуле описанным выше процессом, чтобы было доступно большее количество потоков для обрабатывать запросы»
Thread vs ThreadPool
попробовать это http://stackoverflow.com/questions/4277844/multithreading- a-large-of-web-request-in-c-sharp – Niventh
«best» довольно сложно определить. Я предлагаю вам изучить «Связанные» вопросы (справа, внизу) и выбрать тот, который, по вашему мнению, будет лучше всего соответствовать вашему приложению. Вероятно, задачи - это путь, но это все еще оставляет много возможностей для разнообразия. –