如何检测对象是否被锁定?
Monitor.TryEnter
(如Is there a way to detect if an object is locked?中所述)对我不起作用,因为如果对象未锁定,它会锁定该对象。
我只想检查它是否被锁定,并且在我的代码中的其他地方我将使用Monitor
该类来锁定对象。
我知道可以使用例如布尔字段(例如private bool ObjectIsLocked
),但是使用锁定对象本身来检测它。
下面的示例代码显示了我想要做的事情:
private static object myLockObject = new object();
private void SampleMethod()
{
if(myLockObject /*is not locked*/) // First check without locking it
{
...
// The object will be locked some later in the code
if(!Monitor.TryEnter(myLockObject)) return;
try
{
....
}
catch(){...}
finally
{
Monitor.Exit(myLockObject);
}
}
}