2013-04-25 61 views
0

這並不是我正在做的,但它足夠接近。我有兩位代表指向相同的功能。包含函數委託的值?

var foo=new Func<string, string, dynamic, string>(f); 
var bar=new Func<string, string, dynamic, string>(f); 

foo被一組線程(不只是一個線程)調用。欄由另一組線程調用。

函數需要知道的參數之一是從哪個線程調用它。

我可以讓每個線程調用函數來告訴它的組名稱(線程知道它屬於哪個組),但是有沒有辦法將線程組名稱(字符串)傳遞給函數本身什麼時候聲明foo和bar?

因此,無論何時一個線程調用foo,函數f都會知道它從第一個組中調用,並且每次線程調用bar時,函數f都會知道它是從第二個組中調用的?

+0

我不確定我完全理解你的問題。如果你想要的只是打印線程名稱,那麼只需從f中調用Thread.CurrentThread.Name即可。 – svrcoder 2013-04-25 14:21:57

+0

對不起,我在發佈後澄清了我的問題。它的線程「group」,它是在線程啓動時傳遞給線程的任意字符串。 – xander 2013-04-25 14:33:03

回答

2

你的意思是這樣的嗎?

var foo = new Func<string, dynamic, string>((s,d) => f("123", s, d)); 
var bar = new Func<string, dynamic, string>((s,d) => f("456", s, d)); 

這樣,常量在代表的聲明過程中只使用一次。

+0

哇!是的,這正是我正在尋找的東西,並沒有期待它那麼簡單。非常感謝 :) – xander 2013-04-25 14:31:27