2012-06-25 3 views
0

Все,Класс монитора в глубину

Не могли бы вы рассказать мне о классе монитора, esp следующий код более подробно?

if (Monitor.TryEnter(CashDrawers.lockObject)) 
    { 
     try 
     { 
      // Work here      
     } 
     finally 
     { 
      Monitor.Exit(lockObject); 
     } 
    } 

Спасибо, CK

+1

Попытка получить эксклюзивную блокировку на указанном объекте и атомарно задает значение, указывающее, был ли заблокирован замок ....;) Ха-ха, можете ли вы быть более конкретным по тому, что вы хотите? Это сайт для вопросов и ответов. –

+0

Спасибо, я понял! – VCK

ответ

1

Не уверен, если это то, что вы ищете, но ...

код, который вы размещены в вашем вопросе является не версия блокирование

lock(CashDrawers.LockObject) 
{ 
    //work here 
} 

Это означает, что он будет работать только в том случае, если он сможет получить блокировку с первой попытки. Если у чего-то еще есть блокировка, тогда ваш код ничего не сделает. Я предполагаю, что этот код написан внутри класса CashDrawers, иначе у вас, вероятно, есть ошибка транскрипции в том, что вам нужно Moniter.Exit на том же объекте, в который вы вошли.

Вы ищете объяснение при синхронизации вообще? Если это так, это выходит за рамки того, что я могу написать в ответ. Пожалуйста, ознакомьтесь с http://www.albahari.com/threading/part2.aspx для получения общей информации о синхронизации в .net.

+0

Я действительно получил его сейчас и благодаря вам. – VCK

Смежные вопросы