TL DR:
Control.Invokecalls DynamicInvoke of your delegate, which takes an array of objects to work with any type of delegate.
//
# . . , 1 arg () (void). updateLabelText sig. :
updateLabelTextDelegate del = new updateLabelTextDelegate(updateLabelText);
:
updateLabelTextDelegate del = updateLabelText;
del, updateLabelText Control.Invoke.
label1.Invoke(del, new object[] { newText });
params, Control.Invoke, object[]
label1.Invoke(del, newText);
Invoke , . (, string, ). del updateLabelText :
del(newText);
:
updateLabelText(newText);
Control.Invoke del, , , , . - :
, invocal :
del.DynamicInvoke(args);
args - object[]. , - ( Delegate), .