title: Why does asynchronous delegate method require calling EndInvoke?
body: <p>Why does the delegate need to call the EndInvoke before the method fires?  If i need to call the EndInvoke (which blocks the thread) then its not really an asynchronous call is it?</p>
  
  <p>Here is the code im trying to run.</p>
  
  <pre><code>class Program
      {
          private delegate void GenerateXmlDelegate();
  
          static void Main(string[] args)
          {
              GenerateXmlDelegate worker = new GenerateXmlDelegate(GenerateMainXml);
              IAsyncResult result = worker.BeginInvoke(null, null);
          }
  
          private static void GenerateMainXml()
          {
              Thread.Sleep(10000);
              Console.WriteLine("GenerateMainXml Called by delegate");
          }
      }
  </code></pre>