Вираз визначає об'єкт, який потрібно заблокувати. Для звичайних методів як вираз використовується ключове слово this. Для статичних - typeof (клас). Блок операторів задає критичну секцію коду, яку потрібно заблокувати.
Наприклад, блокування операторів в приведеному раніше методі Do виглядає таким чином:
public void Do()
{
Lock( this )
{
for ( int i = 0; i < 4; ++i )
{
Console.Write( " " + i );
Thread.Sleep( 30 );
}
}
}
Результат роботи програми:
Потік Second
Потік Third
0 1 2 3 0 1 2 3