7
どのように動作するかを調べるために少し実験をしています。私は、次のコードを持っている....net 4.0タスクのプライベート変数
for (int i = 0; i < 20; i++)
{
Task.Factory.StartNew(() => MethodTest(i));
}
MethodTestはほとんど常にint型20を受ける理由(私は、デバッガでステップスルーしていない限り)私は思ったんだけど。
「i」が渡されると、管理対象スレッドのローカルストレージの一部になると想定しているため、明らかに理解できないことがあります。
for (int i = 0; i < 20; i++)
{
int x = i;
Task.Factory.StartNew(() => MethodTest(x));
}
理解することは重要なことは、あなたが変数i
にわたり閉鎖を作成しているということです、そしてない現在の値: - あなたはループ変数の上に閉じている