我相信這是非常標準的東西,但我似乎無法包圍我的頭。通用拉姆達方法簽名
我正在寫一個簡單的助手類,用於在單獨的線程中執行代碼。我非常熟悉如何做到這一點,但不使用lambdas。我想這是關於一般的lambda使用情況,而不是線程。
我希望能夠寫的是這樣的:
ThreadedMethods.Parameterized<int>((i) => { for (;i < 10; i++;) DoSomething();});
和
ThreadedMethods.Parameterized<IEnumberable<Something>>((list) =>
{
foreach (var s in list)
{
s.SomeHeavyProcessing();
}
});
這可能嗎?此外,是否有任何理由嘗試實現這一目標,因爲lambda可以訪問方法調用範圍內的所有內容?
爲什麼不使用TPL或PLINQ或東西已經寫好,將並行任務?不需要重新發明輪子。 – cdhowie
FWIW,鏈接:http://msdn.microsoft.com/en-us/library/dd460717.aspx(任務並行庫)和http://msdn.microsoft.com/en-us/library/dd460688.aspx (並行LINQ)。 TPL的方法正是你在做什麼,但不要誤解我的意思,我已經完成了你在.NET 4中可用之前完成的任務。 –
謝謝。我想要做的是用一個Action參數將一個簡單的Thread.Start(ParameterizedThreadStart)包裝成一個單一的方法。但是由於ParameterizedThreadStart沒有(!)有一個通用的姐妹,所以代碼不會編譯。 TPL的任務並沒有真正做我想要的。但我的問題依然存在。是否有任何理由讓我真的想要這樣做,因爲lambda代碼無論如何都可以訪問所有範圍變量? –
havardhu