如何使用锁使对象无法访问

时间:2014-04-28 09:07:59

标签: c# multithreading locking

这是我的班级:

public class Server
{
    public string Name{get;set;}
    public void DoTheJob()
    {
        //MoreCode
    }
}

我创建了一个新的Server实例,我希望在DoTheJob()运行时使实例无法访问。

我可以这样做吗?

DoTheJob()
{
    lock(this)
    {
        //logic
    }
}

1 个答案:

答案 0 :(得分:1)

是的,你可以,但你不应该锁定this以避免死锁。使用类似的东西:

public class Server
{
    private object lockObject = new object();

    public string Name { get; set; }
    public void DoTheJob()
    {
        lock(lockObject)
        {
            //MoreCode
        }
    }
}

如果您还想避免阅读Name,则需要实现一个也使用相同lock的getter和setter。