2011-12-20 98 views
3

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

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

而VS问我方法转换为组,而我不能,因为这种方法是从其他地方使用。所以我不想复制粘贴代码。

有没有办法?

+1

你写的代码编译得非常好。你能否展示更多代码+编写从编译器获得的完整错误消息? – Svarog 2011-12-20 07:40:21

+0

那么它可能是ReSharper造成这个问题... – eugeneK 2011-12-20 07:42:19

回答

5

由ReSharper引起的,因此没有它的人从未见过这条消息。我认为这是编译器错误。

优雅的相关工作将是:

Parallel.ForEach(listOfNames, DoSometingWithName); 

不知道它是更具可读性,但。

+0

而不是传递一个只调用一个函数的函数,而只是传递函数。少一个方法调用可能会稍微有效一些。 – 2011-12-20 09:59:56

+2

这不是一种解决方法。如果您按Alt-Enter让他快速解决问题,ReSharper会做这件事 – 2011-12-25 16:51:42

2

不确定你的意思,但是你搜索这个语法吗?

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

这是我得到“转换为组方法警告”... – eugeneK 2011-12-20 07:39:12

+1

你可以发布完整的警告消息?此代码的工作在我的侧没有任何警告.. Parallel.ForEach(源,currentString => { Console.WriteLine(currentString); } ); – 2011-12-20 07:42:04

+0

如何定义“DoSomethingWithName”?这不是一个财产,是吗? ;) – 2011-12-20 07:42:57