Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Run delegate method with BeginInvoke

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))?

like image 935
Radu D Avatar asked Dec 29 '22 05:12

Radu D


1 Answers

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);});
like image 55
Marc Gravell Avatar answered Jan 12 '23 16:01

Marc Gravell