Блок lock гарантує що інший потік не зможе виконати операції цього блоку, доки інший потік не звільнить цей блок і не припинить виконання операцій. Потік, який намагається увійти в цей блок, буде очікувати своєї черги на виконання доки блок не буде звільнено. Оператор lock використовує об'єкти синхронізації, в якості якого в багатьох випадках може використовуватись this, або у випадку коли необхідно виконати блок у методі статичного класу, або захистити статичну змінну використовують typeof(ім'я_класу).
Синтаксис: lock(вираз) блок_команд
Приклад: class User { String name = "no name";
public User(String _name)
name = _name;
public void PrintName()
lock (this)
Console.WriteLine("User name : " + name);
public void setName(String _name)
lock (this)
name = _name;