Как определить, заблокирован ли объект или нет?
Monitor.TryEnter
(как описано в Есть ли способ определить, заблокирован ли объект?) не работает для меня, потому что он блокирует объект, если он не заблокирован.
Я только хочу проверить, заблокирован ли он и где-то еще в моем коде. Я буду использовать класс Monitor
для блокировки объекта.
Я знаю, что можно использовать, например, логическое поле (например, private bool ObjectIsLocked
), но что его обнаружить с помощью самого объекта блокировки.
Пример кода ниже показывает, что я хочу сделать:
private static object myLockObject = new object();
private void SampleMethod()
{
if(myLockObject /*is not locked*/) // First check without locking it
{
...
// The object will be locked some later in the code
if(!Monitor.TryEnter(myLockObject)) return;
try
{
....
}
catch(){...}
finally
{
Monitor.Exit(myLockObject);
}
}
}