Я знаю, что это было задано и обсуждено ранее, но все же я думаю, что неясно, что использовать в этом сценарии.Parallel.ForEach, Task.Factory и N threads
Мне нужно сделать 100 звонков против веб-сервиса, который я знаю, может обрабатывать 16 запросов, в то время (не то, что он потерпит неудачу, если он получает больше)
Я думаю, что Parallel.ForEach для более низкоуровневые интенсивные вызовы ЦП - он решит, сколько потоков лучше всего подходит. Task.Factory использует пул потоков, поэтому может быть меньше 16 потоков (также больше)
Вне курса Я мог бы написать свой собственный пул потоков, но разве нет более очевидного выбора для этого сценария?
Вы уже ошиблись, думая в терминах Threads. В идеале, вы должны использовать один из асинхронных API для выполнения запросов. .. В этом случае вы можете легко обслуживать ответы со значительно меньшим количеством потоков из .net ThreadPool. Я бы подумал о том, чтобы сделать короткий перерыв в задаче и взять минутку, чтобы изучить парадигму асинхронного ожидания, представленную с помощью C# 5/.net4.5 – spender