максимальное количество параллельных потоков для каждого цикла

Как добавить максимальное количество параллельных потоков для этого цикла:

Parallel.ForEach(DataRow drValue in dtValues.Rows)
{
}

Это не работает :

Parallel.ForEach(DataRow drValue in dtValues.Rows, new ParallelOptions {MaxDegreeOfParallelism = 4})
{
}

person Akon    schedule 22.10.2013    source источник
comment
Не работает? Можете ли вы быть более точным - какое поведение вы видите вместо этого?   -  person Baldrick    schedule 22.10.2013
comment
В DataRow... он показывает, что ClassName недействителен на данный момент.   -  person Akon    schedule 22.10.2013
comment
Parallel.ForEach() не встроен в язык, это обычный метод. Таким образом, вы не можете использовать синтаксис для foreach в нем.   -  person svick    schedule 22.10.2013


Ответы (1)


Попробуйте использовать лямбду:

Parallel.ForEach(dtValues.Rows.AsEnumerable(), new ParallelOptions { MaxDegreeOfParallelism = 4 }, drValue =>
{
    //logic goes here
});

и чтобы иметь этот метод, вы должны включить System.Data.DataSetExtensions.dll в свой проект. См. здесь.

person gzaxx    schedule 22.10.2013
comment
На ForEach это показывает - Аргумент типа не может быть выведен из использования ... Разве нам не нужно определять здесь drValue? - person Akon; 22.10.2013
comment
@Akon, посмотри мое редактирование, забыл, что строки таблицы данных должны быть enumarable - person gzaxx; 22.10.2013
comment
Сейчас — не удается разрешить ForEach (DataRowColloction, параметр многопоточности, лямбда-выражение) - person Akon; 22.10.2013
comment
@Akon извините, мое первое редактирование было неправильным, исправил его сейчас. Вы были быстрее меня с моим исправлением;) - person gzaxx; 22.10.2013
comment
@Akon еще раз, исправлено, надеюсь, в последний раз - person gzaxx; 22.10.2013