asynchronous function call

This is a discussion on asynchronous function call within the C# Programming forums, part of the General Programming Boards category; Hello everyone,
I am learning from,
http://msdn2.microsoft.com/en-us/lib...yc(VS.80).aspx
two simple questions,
1. For every degelate we defined (just a normal C# ...

asynchronous function call

1. For every degelate we defined (just a normal C# delegate, no special, and not special designed for asynchronous method call purpose), BeginInvoke and EndInvoke will be defined automatically for every delegate, right? (just looks like for every class we defined, toString, GetHashCode, etc. are defined automatically?)

2. What are the pros and cons compared with the pattern of using EndInvoke to wait for result and the pattern of using WaitHandle to wait for result. To my points, I think they function the same -- block the execution of current thread/method.