title: C# Asynchronous operation
body: <p>Acctually  I have hardtime in understanding BeginInvoke() and EndInvoke() pair.</p>
  
  <pre><code>class AsynchronousDemo
  {
  
      public delegate void DemoDelegate();
      static void Main()
      {
  
          DemoDelegate d = PrintA;
  
          IAsyncResult AResult = d.BeginInvoke(Callback,null);
          d.EndInvoke(AResult);
          Console.ReadKey(true);
      }
  
      static void PrintA()
      {
          Console.WriteLine("....Method in Print A Running ....");
          Thread.Sleep(4000);
          Console.WriteLine("....Method in Print A Completed...");
      }
  
  
      static void Callback(IAsyncResult ar)
      {
          Console.WriteLine("I will be finished after method A 
          completes its execution");
      }
  }
  </code></pre>
  
  <p>1) Do we use "EndInvoke()" to indicate the ending "asynchronous operation" of BeginInvoke()..?</p>
  
  <p>2) What is the real use of those pair?</p>
  
  <p>3) can i get some simple and nice examples to understand it more properly?</p>