实例对象中的C#lock对象
发布时间:2020-12-16 09:38:37 所属栏目:百科 来源:网络整理
导读:我面临的情况迫使我锁定一个锁定对象,该对象位于实例对象内部,我想知道它是否真实? 澄清: public class classA{ object objLock = new object(); public void MethodA(object objClassA) { classA cls = (classA)objClassA; lock(cls.objLock) { Do someth
我面临的情况迫使我锁定一个锁定对象,该对象位于实例对象内部,我想知道它是否真实?
澄清: public class classA { object objLock = new object(); public void MethodA(object objClassA) { classA cls = (classA)objClassA; lock(cls.objLock) { Do something with cls } } } 是允许这样做的吗? 解决方法
您锁定的对象位于同一个类中,但是位于不同的实例中.从这个意义上讲,您并没有打破封装,但您仍然希望提取该代码,以防止锁定外部对象.这是一个例子:
public class classA { private readonly object objLock = new object(); public void MethodA(object objClassA) { classA cls = (classA)objClassA; cls.DoSomething(); } private void DoSomething() { lock (this.objLock) { Do something with cls } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |