These two methods are not generated by the .NET compiler. If you use .NET Reflector or ILDSAM, you will not find the MSIL code for these methods. They are actually provided by the CLR itself and therefore are not actually implemented using managed code.
At a high level, BeginInvoke uses a thread from a thread pool to execute a delegate. If an exception occurs during execution, it is captured and remembered. When EndInvoke is called, it will restore any remembered exception, and if it does not allow to get the result from the delegate. This applies to everything that is interesting.
source share