Use Monitors : Monitor « Thread « C# / CSharp Tutorial

using System;
using System.Collections;
using System.Threading;

class MainClass
  public static ArrayList MyList = new ArrayList();
  static void Main(string[] args)
      Thread ThreadOne = new Thread(new ThreadStart(MonitorExample));
  static void MonitorExample()
    MyList.Add("a value");

20.19.1.Use Wait() and Pulse() to create a ticking clock
20.19.2.Use Monitors
20.19.3.Monitor: Enter and Exit
20.19.4.Monitor: try to enter
20.19.5.Coordinate two threads using Monitor
20.19.6.Use Monitor to control more than one Threads
20.19.7.Increment Monitor
20.19.8.Monitor Pool
20.19.9.Throw exception between Monitor.Enter and Montor.Exit
20.19.10.Using A Monitor
20.19.11.Use lock and Monitor to coordinate Producer and Consumer