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