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