2011-12-20 2 views
3

Пытаюсь:Как выполнить функцию на Parallel.ForEach?

Parallel.ForEach(listOfNames, name => DoSometingWithName(name)); 

в то время как VS просит меня, чтобы преобразовать метод группы, в то время как я не могу, так как этот метод используется в других местах. Поэтому я не хочу копировать код.

Есть ли способ?

+1

Код, который вы написали, компилируется отлично. Не могли бы вы показать больше кода + написать полное сообщение об ошибке, которое вы получаете от компилятора? – Svarog

+0

Ну, это, вероятно, ReSharper, вызывающий эту проблему ... – eugeneK

ответ

5

Вызвано ReSharper, таким образом, ребята без него никогда не видели этого сообщения. Я думал, что это ошибка компилятора.

Элегантная работа вокруг будет:

Parallel.ForEach(listOfNames, DoSometingWithName); 

Не уверен, что это более читаемым, хотя.

+0

Вместо того, чтобы передавать функцию, которая просто вызывает функцию, она просто передает функцию вместо этого. Может быть немного более эффективным, так как есть еще один вызов метода. –

+2

Это не обходной путь. Это то, что сделал ReSharper, если вы позволите ему быстро исправить проблему, нажав Alt-Enter –

2

Не уверен, что вы имеете в виду, но вы искали этот синтаксис?

Parallel.ForEach(listOfNames, name => 
{ 
//Place your code here. 
DoSometingWithName(name); 
}); 
+0

Здесь я получаю «конвертировать в групповой метод предупреждения» ... – eugeneK

+1

Можете ли вы опубликовать полное предупреждение? этот код работает на моей стороне без предупреждения .. Parallel.ForEach (источник, currentString => { Console.WriteLine (currentString); } ); –

+0

Как определить "DoSomethingWithName"? это не свойство, не так ли? ;) –

Смежные вопросы