2009-06-16 61 views
5

我在我的代碼中有一個鎖。
我有兩個線程同時運行。 如何判斷某個線程是否鎖定了該對象?如何查找對象是否鎖定? c#

private readonly object _lockObject = new Object(); 

// Both methods running 
public void Method1() 
{ 
    if(certainCriteria) 
    { 
     lock(_lockObject) 
     { 
     //doWork; 
     } 
    } 
} 

// Both methods running 
public void Method2() 
{ 
    if(isLocked?(_lockObject)) 
    { 
     //doWork; 
    } 
} 

有沒有人有isLocked?方法?

在此先感謝!

回答

8

可能使用Monitor.TryEnter(要麼爲0的超時,或者不採取暫停在所有的過載),然後立即打電話Monitor.Exit如果成功 - 但我會說這通常是一個壞設計氣味。特別是,數據在您返回時立即陳舊。

你想達到什麼目的?

+0

@Jon:耀華太快了,鋸齒是(如果你能管理黑色國家的口音,讀得更好)。這正是我要提出的一個巨大的警告:「它在我們的基礎上工作」知道「鎖的工作方式」。 – AnthonyWJones 2009-06-16 14:52:16