According to Jon Skeet, “You can only call BeginInvoke on a delegate which has a single target invocation.”
Why is that? What’s the real reason?
Note: For clarification (and because I made this mistake), I am talking about the BeginInvoke on delegates, not on controls.
I think Jon Skeet does a good job explaining in the post you linked:
Basically calling
BeginInvokeon aMulticastDelegateis ambiguous, do you want the delegates to wait for each other or not? While in theory it could decide for you, the choice has been made to force you to explicitly select the method you want by calling the delegates in a different fashion.In other words it is a design choice to avoid confusion. Also it is important to note that
BeginInvokehas fallen out of favor and newer methods of asynchronous programming are available making updating this old standard unlikely, so even if they wanted to change now, there is no reason to.