4

In my class I have a static method

public static void DoWork(int param) ...

I want to run that method like:

Form.BeginInvoke(DoWork, param);

Is this operation possible?

I tried with the MethodInvoker class ... but I don't want to define the method body inline. Is there any generic delegate? Or do you know any other way of calling this without defining a delegate object (private delegate void DoWorkDelegate(int param))?

Eon
  • 3,833
  • 10
  • 46
  • 75
Radu D
  • 3,505
  • 9
  • 42
  • 69

1 Answers1

10

You should be able to use:

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

As a side note, MethodInvoker has the advantage of special handling - it can invoke that one with typed-invoke, rather than reflection-invoke - and perhaps more importantly offers checking of the args ahead of time; personally I would just use:

form.BeginInvoke((MethodInvoker)delegate {DoWork(param);});
Marc Gravell
  • 1,026,079
  • 266
  • 2,566
  • 2,900