使用BeginInvoke运行委托方法

Rad*_*u D 3 .net c# delegates winforms

在我的课上,我有一个静态方法

public static void DoWork(int param) ...
Run Code Online (Sandbox Code Playgroud)

我想运行该方法,如:

Form.BeginInvoke(DoWork, param);
Run Code Online (Sandbox Code Playgroud)

这个操作可以吗?

我尝试使用MethodInvoker类...但我不想将方法体内联定义.有没有通用代表?或者您是否知道在没有定义委托对象(private delegate void DoWorkDelegate(int param))的情况下调用此方法的任何其他方法?

Mar*_*ell 9

你应该可以使用:

form.BeginInvoke((Action<int>)DoWork, param);
Run Code Online (Sandbox Code Playgroud)

作为旁注,MethodInvoker具有特殊处理的优点 - 它可以使用类型调用而不是反射调用来调用那个 - 并且可能更重要的是提前检查args; 我个人只会用:

form.BeginInvoke((MethodInvoker)delegate {DoWork(param);});
Run Code Online (Sandbox Code Playgroud)