Выполнить ForEach параллельно - C# - PullRequest
0 голосов
/ 27 января 2020

У меня есть оператор foreach, например

// distinctValues is DataTable with thousand of rows
foreach (DataRow row in distinctValues.Rows)
{
    // Lots of Statements
}

Есть ли способ выполнить forfach Оператор в Параллельно для более быстрого выполнения?

Ответы [ 2 ]

0 голосов
/ 27 января 2020

Ну, единственная (небольшая) трудность заключается в том, что DataTable (если я угадал distinctValues тип справа) не реализует интерфейс IEnumerable<DataRow> Однако вы можете легко получить его с помощью .AsEnumerable() метод расширения :

Parallel.ForEach реализация

  Parallel.ForEach(distinctValues.AsEnumerable(), row => { 
    // Lots of Statements 
  });

PLinq (Parallel Linq) код, который может быть более удобным для экспериментируя:

  distinctValues
    .AsEnumerable()
    .AsParallel()
    //.AsOrdered()
    //.WithMergeOptions(ParallelMergeOptions.NotBuffered)
    //.WithDegreeOfParallelism(4)
    .ForAll(row => {
       // Lots of Statements
    });
0 голосов
/ 27 января 2020

использование,

Parallel.ForEach(list,(item)=>{
//do works
})

Документы

...