0

所以我这里有个问题。我在我的类中声明了一些变量,然后我尝试更改它,然后用我的 windows 窗体线程读取它。该变量被读取为声明它的初始值,没有任何东西可以改变它。例子:

我在 Class1.cs 中声明了值:

public static int TestVar = 51;

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

TestVar = 45;

然后我从我的 Windows 窗体线程中读取变量,如下所示:

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

我的 windows 窗体中的结果是 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());
}

有什么帮助吗?

4

1 回答 1

1

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

public static volatile int TestVar = 51;
于 2013-08-16T23:39:08.587 回答