正在使用受保护的文件锁定(或者我可以避免受保护的锁而不添加辅助方法,如获取锁等...在基础中)?

时间:2013-06-03 05:22:34

标签: c# .net visual-studio

我理解不建议将它用于锁定,因为对象可以在难以控制的类之外进行修改。因此,它总是建议使用私有字段来锁定。 (我看过:Why is lock(this) {...} bad?

保护锁怎么样?我认为我应该很好,因为我的班级是内部的,没有人可以在我的集会之外从他们那里得到......

请注意,我不能使用派生的单独锁和基类,因为在多个类中很难管理死锁。

internal class Base
{
    protected object sync = new object();
    public string Foo
    {
        get
        {
            lock (sync)
            {
                //set it
            }
        }
    }
}

internal class Derived : Base
{
    public string Bar
    {
        get
        {
            lock (sync)
            {
                //set it
                //try to  get "Foo" (if i use seperate locks-syncobjects
                // in derived and base class there can be a ptoential deadlock)
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

你应该为每个字段使用锁定对象,我认为它将解决你的问题。

我想使用相同的锁对象锁定对所有字段的访问权限,我建议您在基类中实现锁定机制化

受保护可能导致与公共相同的问题,因为您不知道谁将从您的类继承。 例如,如果在某个值中你想要使用基类中的其他字段,那么你将失败。

所以 - 保护也很糟糕