0

全部,

你能解释一下Monitor Class,尤其是更详细的代码吗?

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

谢谢,CK

4

1 回答 1

1

不确定这是否是您正在寻找的,但...

您在问题中发布的代码是

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

这意味着只有在第一次尝试时能够获得锁,它才会“工作”。如果其他东西已经拥有锁,那么您的代码将不会做任何事情。我假设此代码是在 CashDrawers 类中编写的,否则您可能会遇到转录错误,因为您需要在您输入的同一对象上进行 Moniter.Exit。

您是否在寻找有关一般同步的解释?如果是这样,那超出了我可以在答案中写的范围。请查看http://www.albahari.com/threading/part2.aspx以了解 .net 中的一些一般同步信息。

于 2012-06-25T21:00:25.797 回答