Мы хотели бы дополнительно контролировать количество «потоков» в наших параллельных циклах, чтобы избежать перегрузки веб-службы (например).
Можно ли указать собственный MaxDegreeOfParallelism в цикле Parallel.ForEach, а также при необходимости вернуться к значению по умолчанию? По-видимому, ноль (0) является недопустимым значением для MaxDegreeOfParallelism, хотя я надеялся, что это может означать просто «игнорировать».
Другими словами, можно ли избежать написания кода такого типа?
int numParallelOperations = GetNumParallelOperations();
if (numParallelOperations > 0)
{
ParallelOptions options = new ParallelOptions();
options.MaxDegreeOfParallelism = numParallelOperations;
Parallel.ForEach(items, options, i =>
{
Foo(i);
});
}
else
{
Parallel.ForEach(items, i =>
{
Foo(i);
});
}
Подробнее здесь: https://stackoverflow.com/questions/275 ... el-foreach