Multithreading 深入监控课堂

Multithreading 深入监控课堂,multithreading,Multithreading,全部, 你能给我解释一下监视器类,特别是下面的代码吗 if (Monitor.TryEnter(CashDrawers.lockObject)) { try { // Work here } finally { Monitor.Exit(lockObject); } } 谢谢, CK不确定这是否是

全部,

你能给我解释一下监视器类,特别是下面的代码吗

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

不确定这是否是您要找的,但是

您在问题中发布的代码是的非阻止版本

lock(CashDrawers.LockObject)
{
     //work here
}
也就是说,只有在第一次尝试时能够获得锁,它才能完成它的“工作”。如果其他东西已经有了锁,那么您的代码将不会做任何事情。我假设这段代码是在CashDrawers类中编写的,否则可能会出现转录错误,需要在输入的同一对象上监视.Exit


您正在寻找关于同步的一般解释吗?如果是这样的话,那超出了我在回答中所能写的范围。请检查.net中的一些常规同步信息。

尝试获取指定对象上的独占锁,并自动设置一个值,指示是否已获取锁……)哈哈,你能说得更具体一点吗?这是一个问答网站。