Task.Factory.StartNew или Parallel.ForEach для многих долгосрочных задач? [Дубликат]

Possible Duplicate:
Parallel.ForEach vs Task.Factory.StartNew

Мне нужно выполнить около 1000 задач вThreadPool на ночной основе (число может увеличиться в будущем). Каждая задача выполняет длительную операцию (чтение данных из веб-службы) и являетсяnot CPU intensive. Async I/O не вариант для этого конкретного случая использования.

УчитываяIList<string> параметров мне нужноDoSomething(string x), Я пытаюсь выбрать между двумя вариантами:

IList<Task> tasks = new List<Task>();
foreach (var p in parameters)
{
    tasks.Add(Task.Factory.StartNew(() => DoSomething(p), TaskCreationOptions.LongRunning));
}
Task.WaitAll(tasks.ToArray());

ИЛИ ЖЕ

Parallel.ForEach(parameters, new ParallelOptions {MaxDegreeOfParallelism = Environment.ProcessorCount*32}, DoSomething);

Какой вариант лучше и почему?

Note :

Ответ должен включать сравнение между использованиемTaskCreationOptions.LongRunning а такжеMaxDegreeOfParallelism = Environment.ProcessorCount * SomeConstant.

Ответы на вопрос(3)

Ваш ответ на вопрос