公共语言运行时给每个委托类型提供 BeginInvoke 和 EndInvoke 方法,以启用该委托的异步调用。
http://msdn.microsoft.com/zh-cn/library/vstudio/system.delegate.aspx
Found my answer in CLR via C# 2.0 by Jeffrey Richter - Chapter on Delegates.
When you use the delegate keyword, the compiler creates a new Type derived from MulticastDelegate and adds a ctor, Invoke() with the same signature as the delegate you specifed and the corresponding BeginInvoke() and EndInvoke().
http://stackoverflow.com/questions/680828/who-adds-begininvoke-invoke-and-endinvoke-method-definitions-to-a-typed-delegat