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