私はこのコードを持っています。これは私が望んでいたように動作しますが、その理由が正確にはわかりません。C、C++ のスタックについて考えると、呼び出しごとに p 変数がスタックに置かれ、メソッドが戻ると消去されると思います。スレッドの閉鎖はどのようにそれをキャプチャし、さらに毎回正しい値をキャプチャしますか? 出力は私が望んでいたものです-ファイルは「_a」、「_b」、「_c」です。
public enum enumTest
{
a = 1,
b =2,
c=3
}
private void Form1_Load(object sender, EventArgs e)
{
callme(enumTest.a);
callme(enumTest.b);
callme(enumTest.c);
}
private void callme(enumTest p)
{
Thread t = new Thread(() =>
{
Thread.Sleep(2000);
Guid guid = Guid.NewGuid();
File.WriteAllText(guid.ToString() + "_" + p.ToString(), "");
});
t.Start();
}