C #Как определить, что объект уже заблокирован

Как я могу определить, заблокирован ли объект или нет?

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);
        }
    }
}

34
задан Community 23 May 2017 в 12:10
поделиться