次のコードがあります。ここで、コンストラクター引数としてオブジェクトをThread
使用し始めます。ParameterizedThreadStart
static object obj = new object();
static void Main(string[] args)
{
ParameterizedThreadStart start = (o) =>
{
ThreadTest(o);
};
var t = new Thread(() => start(obj));
t.Name = "t";
t.Start();
Thread.Sleep(3000);
obj = null;
// Why the Thread (t) continue here??
Console.ReadKey();
}
private static void ThreadTest(object o)
{
while (o != null)
{
Console.WriteLine(Thread.CurrentThread.Name);
Thread.Sleep(1000);
}
}
メソッドで設定obj
しnull
た後もThreadTest
、引数o
はまだ有効なオブジェクトですが、なぜですか?引数を使用
するように設定するにはどうすればよいですか?o
null
obj