为什么多线程时属性值不会立即更新? C#

时间:2016-09-13 06:56:22

标签: multithreading properties thread-safety

我有一个正在运行的Task,它在另一个线程中更新了一个Property。

它更新它的那一刻,在循环中它重新检查变量并经常发生变量仍未更新? (第二,二)

以下是一个例子:

while (true) 
{
     if (someProperty) // Fails to recognize the set variable of True.
     {
         // Do something...
     }

     someProperty = true;
}

这是一个多线程问题,应该同步吗?解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

如果此变量在线程之间共享,则必须将其声明为volatile。 https://msdn.microsoft.com/en-us/library/x13ttww7.aspx