如何在Parallel.ForEach上执行函数?

3

我想要:

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

当我在VS中被要求将方法转换为组时,由于其他地方也使用了此方法,因此我无法这样做。所以我不想复制粘贴代码。

有没有办法?


1
你编写的代码可以完美地编译。请问你能否展示更多的代码并且提供编译器给出的完整错误信息? - Svarog
很可能是ReSharper引起了这个问题... - eugeneK
2个回答

5
由于ReSharper的原因,没有安装ReSharper的人从未看到过这个消息。我以为这是编译器错误。 一个优雅的解决方法是:
Parallel.ForEach(listOfNames, DoSometingWithName);

不确定这样是否更易读。


与其传递只调用函数的函数,不如直接传递函数本身。这样可能会稍微更有效率,因为少了一个方法调用。 - Mongus Pong
2
这不是一个变通方法。如果您按Alt-Enter键让ReSharper为您快速修复问题,那么这就是它会执行的操作。 - Dmitry Osinovskiy

2

不确定你的意思,但你是否搜索过此语法?

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

1
你能发完整的警告信息吗?这段代码在我的电脑上运行没有任何警告。Parallel.ForEach(source, currentString => { Console.WriteLine(currentString); }); - Boas Enkler
"DoSomethingWithName" 是如何定义的?它不是一个属性,对吧?;) - Boas Enkler
DoSomethingWithName 是一个无返回值的方法。 - eugeneK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,