2011-12-20 129 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