0

ここで問題があります。クラスでいくつかの変数を宣言し、それを変更してから、Windows フォーム スレッドで読み取ります。変数は、宣言された初期値として読み取られており、何も変更できません。例:

Class1.cs で値を宣言します。

public static int TestVar = 51;

次に、後で同じクラスの値をたとえば 45 に変更します。

TestVar = 45;

次に、次のように Windows フォーム スレッドから変数を読み取ります。

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

そして、私の Windows フォームの結果は 45 ではなく 51 です。それを 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 に答える