Почему Parallel.ForEach не запускает несколько потоков?

Сегодня я попытался оптимизировать оператор foreach , который работает с XDocument .

До оптимизации:

foreach (XElement elem in xDoc.Descendants("APSEvent").ToList())
{
    //some operations
}

После оптимизации:

Parallel.ForEach(xDoc.Descendants("APSEvent").ToList(), elem =>
{
    //same operations
});

Я видел, что .NET в Parallel.ForEach (...) открывал ТОЛЬКО один поток! В результате временной интервал Parallel был больше, чем стандартный foreach .

Как вы думаете, почему .NET открыла только 1 поток? Из-за блокировки файла? Спасибо

22
задан Chuck 10 November 2017 в 15:09
поделиться