1

ここを見て:

static void Main(string[] args)
{
    test p = new test();

    new Thread(() => p.SayHello("Thread One")).Start();
    new Thread(() => p.SayHello("Thread Two")).Start();
}

それから:

class test
{
    public void SayHello(string data)
    {
        int i = 0;

        while (i < 50)
        {
            Console.WriteLine("Hello from " + data);
            i++;
        }
    }
}

i2 番目のスレッドが変数を 0 にリセットしないのはなぜですか? 最初のスレッドで実行されているwhileループを台無しにしますか?

4

3 に答える 3

0

これは、各スレッドがローカル変数を持つ SayHello メソッドの独自の「コピー」を取得していると考えてください。両方のスレッドで同じ i を使用する場合は、それを参照渡しする必要があります。

于 2013-10-15T21:32:38.767 に答える