我很新的C#和我想问,如果我在多线程技术情况(伪代码):锁定在多个线程的变量
public class ClassA
{
ClassB c = new ClassB();
public void someMethod()
{
c.myVar = 1;
// Some other stuff
c.myVar = 0;
}
}
public class ClassB
{
private int myVar;
public void MethodA()
{
if(myVar = 1)
myVar = 0;
}
}
如果的someMethod()了methodA()可以在单独的线程中处于活动状态,则MethodA()可以将if语句评估为true;但在它设置myVar = 0之前,someMethod设置myVar = 0,因此在MethodA()中将myVar设置为0是不正确的!我可以在myVar的属性(set,get)上锁定{}还是需要使用Interlock(我还没有互锁的经验)?
1)不要为c类型调用一个ClassB类型的变量,多数民众赞成混淆。 – 2010-11-02 20:54:56
你是不是指'if(myVar == 1)'? – Vlad 2010-11-02 20:55:09
2)你不能访问c.myVar,因为它是ClassB的私有成员。 – 2010-11-02 20:55:29