通过另一个线程读取变量 - 变量不会改变

时间:2013-08-16 23:38:03

标签: c# multithreading variables

所以我在这里遇到了问题。我在我的类中声明了一些变量,然后我尝试更改它然后用我的Windows表单线程读取它。该变量被读作它声明的初始值,没有任何东西可以改变它。例如:

我在Class1.cs中声明了值:

public static int TestVar = 51;

然后我将同一个类中的值更改为例如45:

TestVar = 45;

然后我从我的windows表单线程中读取变量,如下所示:

label1.Text = Class1.TestVar.ToString();

我的窗体中的结果是51而不是45.如果我将其声明为0或没有任何初始值,则无关紧要。它将保持为0而不是。

它已被声明的类将变量精细读取为45,不知何故另一个线程没有更新它。

使用以下命令运行Windows窗体:

public void RunThread()
{
    Thread thread = new Thread(new ThreadStart(RunForm));
    thread.Name = "NewForm";
    thread.Start();
}

public void RunForm()
{
    Application.Run(new NewForm());
}

任何帮助?

1 个答案:

答案 0 :(得分:1)

如果您在多个线程中使用该变量,则必须声明它volatile

public static volatile int TestVar = 51;