В Monitor документации .NET Framework 4.5 я нашел предложение, в котором говорится, что блокировка ключевых слов использует Enter(Object, Boolean) метод Monitor:Заблокировать вызовы ключевых слов Monitor.Enter (Object) или Enter (Object, Boolean)?
Функциональные возможности, предоставляемые Ввод и методы выхода идентичны, обеспечиваемый C# замок (SyncLock в Visual Basic), за исключением того, что lock и SyncLock переносят перегрузку метода Enter (Object, Boolean) и метод Exit в try ... finally block (Попробуйте ... Наконец, на Visual Basic), чтобы убедиться, что монитор выпущен.
С другой стороны, в overwiew из Monitors есть:
Визуальное заявления # блокировки Основные SyncLock и C использовать MonitorEnter взять замок и MonitorExit, чтобы освободить его.
MonitorEnter в выше, относится к другой версии Enter метода, чем предыдущий, а именно: Enter(Object)
В Thread Synchronization (C# and Visual Basic) для Visual Studio 2012 есть пример, как замок обручи Монитор:
System.Object obj = (System.Object)x;
System.Threading.Monitor.Enter(obj);
try
{
DoSomething();
}
finally
{
System.Threading.Monitor.Exit(obj);
}
Eсть тоже Enter(Object) версия.
Что такое истина? Записывает ли запрос блокировки Enter(Object, Boolean) или Enter(Object)? Есть ли какая-то разница, как это делается?
Они оба верны. Зависит от той версии .NET, на которую вы нацеливаетесь. –
@HansPassant: Я получаю эти кавычки только из .NET 4.5 и Visual Studio 2012. –