0

ここに私のテストコードがあります:

  class Program
{
    static void Main(string[] args)
    {
        new Thread(delegate() { runThread(); }).Start();

        Console.WriteLine(Global.test);
        Console.ReadKey();
    }
    private static void runThread()
    {
        Console.WriteLine("this is run thread");
        Global.test = "this is test from thread";

        Console.WriteLine(Global.test);
    }
}
public class Global
{

    public static string testV { get; set; }
}

スレッドで「testV」値を設定できるようにしたい。Thread が値を設定しているように見えますが、main メソッドから testV の値を取得しても何も返されません。何故ですか?

4

2 に答える 2

1

あなたの特定のケースConsole.WriteLine(Global.test);では、よりも早く実行されますrunThread。最も簡単な方法は、次を使用することJoinです。

var thread = new Thread(delegate() { runThread(); }).Start();
thread.Join();

Console.WriteLine(Global.test);

しかし、これは間違いなくプロダクションコード用ではありません(手動スレッド作成にも同じことが当てはまります)。

于 2013-05-30T07:29:11.960 に答える