Выражение определяет объект, который требуется заблокировать. Для обычных методов в качестве выражения используется ключевое слово 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