使用BeginInvoke运行委托方法

4

在我的类中,我有一个静态方法。

public static void DoWork(int param) ...

我想执行这个方法,像这样:

Form.BeginInvoke(DoWork, param);

这个操作能实现吗?

我尝试使用MethodInvoker类...但我不想内联定义方法体。 是否有通用的委托?或者您知道其他调用此操作的方式而不需要定义一个委托对象(private delegate void DoWorkDelegate(int param))?

1个回答

10

你应该能够使用:

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

顺便提一下,MethodInvoker 的优势在于特殊处理 - 它可以使用类型调用而不是反射调用来调用一个方法 - 并且更重要的是提前检查参数; 个人而言 我只会使用:

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

@Onkelborg - 不是的;实际上这个特定的是2.0版本:http://msdn.microsoft.com/en-us/library/018hxwa8(v=VS.80).aspx - Marc Gravell
你可能想提一下BeginInvoke是一个实例方法。 - Hans Passant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接