Я новичок в C#, и я хотел бы спросить, если я эту ситуацию MULTI НИТЕЙ (псевдокод):блокировки на переменную в несколько потоков
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 как истинный; но до того, как он установит myVar = 0 someMethod устанавливает myVar = 0, что делает неправильным установить myVar в 0 в MethodA() !!
В принципе, как я могу заблокировать myVar: могу ли я заблокировать {} свойство myVar (установить, получить) или мне нужно использовать Interlock (у меня еще нет опыта Interlock)?
1) Не вызывайте переменную типа ClassB для c, которая запутывает. –
Вы имели в виду 'if (myVar == 1)'? – Vlad
2) Вы не можете получить доступ к c.myVar, поскольку он является частным членом ClassB. –