Enter
Monitor.Enter блокирует объект до вызова Exit.
Синтаксис
Monitor.Enter(syncRoot);
Пример
Давайте войдем и выйдем из критического участка:
using System;
using System.Threading;
class Program
{
static void Main()
{
var gate = new object();
Monitor.Enter(gate);
Console.WriteLine("in");
Monitor.Exit(gate);
Console.WriteLine("out");
}
}
Результат выполнения кода:
"in"
"out"
Пример
Давайте сравним с TryEnter на свободном объекте:
using System;
using System.Threading;
class Program
{
static void Main()
{
var gate = new object();
bool res = Monitor.TryEnter(gate, 0);
Console.WriteLine(res);
Monitor.Exit(gate);
}
}
Результат выполнения кода:
True