Is there something wrong with
for(int i = 0; i < Environment.ProcessorCount; i++)
Task.Factory.StartNew(...);
? for(int i = 0; i < Environment.ProcessorCount; i++)
Task.Factory.StartNew(...);
?