Thread C# Tutorial

using System;
using System.Threading;
delegate void WorkerThreadHandler();
public class MainClass
{
  public static AutoResetEvent ResetEvent = new AutoResetEvent(false);
  public static void Main()
  {
      WorkerThreadHandler workerMethod = null;
      IAsyncResult asyncResult = null;
      try
      {
          workerMethod = new WorkerThreadHandler(DoWork);
          asyncResult = workerMethod.BeginInvoke(null, null);
          while(!asyncResult.AsyncWaitHandle.WaitOne(1000, false))
          {
              Console.Write('.');
          }
      }
      finally
      {
          if (workerMethod != null && asyncResult != null)
          {
             workerMethod.EndInvoke(asyncResult);
          }
      }
  }
  public static void DoWork()
  {
      Thread.Sleep(1000);
  }
}