2010-10-26 35 views
3

在我的課堂我有一個靜態方法運行的委託方法與BeginInvoke的

public static void DoWork(int param) ... 

我想運行這樣的方法:

Form.BeginInvoke(DoWork, param); 

是該操作可能嗎?

我嘗試過使用MethodInvoker類...但我不想定義方法體內聯。 有沒有任何通用代理?或者你知道任何其他方式調用這個沒有定義委託對象(private delegate void DoWorkDelegate(int param))?

回答

8

您應該能夠使用:

form.BeginInvoke((Action<int>)DoWork, param); 

作爲一個側面說明,MethodInvoker有特殊處理的優勢 - 它可以調用一個與類型化調用,而不是反射調用 - 也許更重要的是提前檢查參數; 親自我只想用:

form.BeginInvoke((MethodInvoker)delegate {DoWork(param);}); 
+0

注:.NET 3.5或更高版本 – Onkelborg 2010-10-26 09:24:57

+0

@Onkelborg - 無;實際上這個*特定*一個是2.0:http://msdn.microsoft.com/en-us/library/018hxwa8(v=VS.80).aspx – 2010-10-26 09:25:57

+0

你可能想提到BeginInvoke是一個實例方法。 – 2010-10-26 10:52:39