Use the lock object : lock « Thread « C# / CSharp Tutorial






using System;
using System.Threading;

class MainClass
{
  private int Runs = 0;

  public  void CountUp() 
  {
    while (Runs < 10)
    {
      lock(this)
      {
        int Temp = Runs;
        Temp++;
        Console.WriteLine(Thread.CurrentThread.Name + " " + Temp);
        Thread.Sleep(1000);
        Runs = Temp;
      }
    } 
  }
  public void RunThreads()
  {
    Thread t2 = new Thread(new ThreadStart(CountUp));
    t2.Name = "t2";
    Thread t3 = new Thread(new ThreadStart(CountUp));
    t3.Name = "t3";
    t2.Start();
    t3.Start();
  }

  public static void Main() 
  {
    MainClass ex = new MainClass();
    ex.RunThreads();
  }
}
t2 1
t3 2
t2 3
t3 4
t2 5
t3 6
t2 7
t3 8
t2 9
t3 10
t2 11








20.15.lock
20.15.1.Shared resource without lock
20.15.2.Lock Demo
20.15.3.Use lock to synchronize access to an object
20.15.4.Use of volatile: lock singleton
20.15.5.Using Lock
20.15.6.Use the lock object
20.15.7.Multi Threaded Printing (Synchronizing Threads)