public LimitedConcurrencyLevelTaskScheduler(int maxDegreeOfParallelism, int hardLimit)
{
if (maxDegreeOfParallelism < 1) throw new ArgumentOutOfRangeException("maxDegreeOfParallelism");
if (maxDegreeOfParallelism > 0 && maxDegreeOfParallelism <= hardLimit)
_maxDegreeOfParallelism = maxDegreeOfParallelism;
else
_maxDegreeOfParallelism = 2;
}