Раздел «Технологии программирования».BeginInvoke:
The BeginInvoke method is used to initiate the asynchronous call. It has the same parameters as the method you want to execute asynchronously, plus two additional parameters that will be described later. BeginInvoke returns immediately and does not wait for the asynchronous call to complete. BeginInvoke returns an IasyncResult?, which can be used to monitor the progress of the call.

When the compiler emits the AsyncDelegate delegate class after parsing its definition as shown below, it generates the BeginInvoke and EndInvoke methods using the Asynchronous Method Signatures, in addition to the Invoke method as displayed in the following code:

public class AsyncDelegate : delegate
{
   public bool Invoke(
         int callDuration, 
         out int threadId);

   // The following code was supplied by the compiler.
   public IAsyncResult BeginInvoke(
         int callDuration, 
         out int threadId,
         AsyncCallback cb,
         Object AsyncState
         );

   // The following code was supplied by the compiler.
   public bool EndInvoke(
         int callDuration, 
         out int threadId,
         IAsyncResult ar);
}

See also: EndInvoke

-- AndreyUstyuzhanin - 06 Apr 2004