如何锁定对象如何发现?C#

div*_*nci 5 c# design-patterns locking

我的代码锁定了.
我有两个线程同时运行.如何判断线程是否锁定该对象?

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有人得到isLocked?方法?

提前致谢!

Jon*_*eet 8

可以使用Monitor.TryEnter(超时为0,或者根本没有超时的重载)然后立即调用,Monitor.Exit如果成功 - 但我会说这通常是一个糟糕的设计气味.特别是,数据在您返回后立即失效.

你想要实现什么目标?

  • 那么这是生产者 - 消费者模式吗?你有一些线程产生项目并将它们放在一个列表上,一些线程消耗这些项目,并删除它们?如果是这样,这是一个经过充分研究的模式; 有很多关于如何正确实现这种模式的文献. (2认同)