public bool HasLock() { int threadId = Thread.CurrentThread.ManagedThreadId; int result = Interlocked.CompareExchange(ref m_owner, threadId, threadId); if (result != threadId) { return false; } return true; }