Как я узнаю, что объект заблокирован?C # - PullRequest
5 голосов
/ 16 июня 2009

В моем коде блокировка.
У меня одновременно запущены два потока. Как я могу определить, блокирует ли поток этот объект?

private readonly object _lockObject = new Object();

// Both methods running
public void Method1()
{
    if(certainCriteria)
    {
        lock(_lockObject)
        {
        //doWork;
        }
    }
}

// Both methods running
public void Method2()
{
    if( isLocked?(_lockObject))
    {
        //doWork;
    }
}

Кто-нибудь получил isLocked? метод?

Заранее спасибо!

1 Ответ

8 голосов
/ 16 июня 2009

Вы можете использовать Monitor.TryEnter (либо с таймаутом 0, либо с перегрузкой, которая вообще не требует тайм-аута), а затем немедленно вызвать Monitor.Exit если это удастся - но я бы сказал, что это, как правило, неприятный запах дизайна. В частности, данные устаревают, как только вы их возвращаете.

Чего вы пытаетесь достичь?

...