Не уверен, если это то, что вы ищете, но ...
код, который вы размещены в вашем вопросе является не версия блокирование
lock(CashDrawers.LockObject)
{
//work here
}
Это означает, что он будет работать только в том случае, если он сможет получить блокировку с первой попытки. Если у чего-то еще есть блокировка, тогда ваш код ничего не сделает. Я предполагаю, что этот код написан внутри класса CashDrawers, иначе у вас, вероятно, есть ошибка транскрипции в том, что вам нужно Moniter.Exit на том же объекте, в который вы вошли.
Вы ищете объяснение при синхронизации вообще? Если это так, это выходит за рамки того, что я могу написать в ответ. Пожалуйста, ознакомьтесь с http://www.albahari.com/threading/part2.aspx для получения общей информации о синхронизации в .net.
Попытка получить эксклюзивную блокировку на указанном объекте и атомарно задает значение, указывающее, был ли заблокирован замок ....;) Ха-ха, можете ли вы быть более конкретным по тому, что вы хотите? Это сайт для вопросов и ответов. –
Спасибо, я понял! – VCK