Это по замыслу.По умолчанию TaskScheduler
используется .NET ThreadPool
, который может быть насыщенным, и вы имеете ограниченный контроль над ним.
Если вы хотите, выможет создать свой собственный TaskScheduler
, чтобы изменить это поведение.Например, при желании вы можете создать тот, который запускает отдельный поток.
Это поведение станет еще более выраженным, если ваш код выполнит еще больше задач, чем уже:
private void DoParallel()
{
//This will over-saturate the ThreadPool unless you use your own TaskScheduler
for (int i = 0; i < 100; i++)
{
Task.Factory.StartNew(() =>
{
Console.WriteLine(DateTime.Now.ToString());
DoSomeWork();
});
}
}
}