using System; using System.Threading; class EventTst { static AutoResetEvent e1 = new AutoResetEvent(false); static AutoResetEvent e2 = new AutoResetEvent(false); public static void Main() { try { Thread thread1 = new Thread( new ThreadStart(PrintOdds) ); Thread thread2 = new Thread( new ThreadStart(PrintEvens) ); thread1.Start(); thread2.Start(); thread1.Join(); thread2.Join(); } finally { e1.Close(); e2.Close(); } } static void PrintOdds() { for (int i = 1; i <= 999; i += 2) { Console.WriteLine("{0} --", i); e1.Set(); // Set e1 in the signal state e2.WaitOne(); // Wait until even number is printed } } static void PrintEvens() { for (int i = 2; i <= 1000; i += 2) { e1.WaitOne(); // Wait until odd number is printed Console.WriteLine("-- {0}", i); e2.Set(); // Set e2 in the signal state } } }