2011-07-14 15 views
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にわたり閉鎖を作成しているということです、そしてない現在の値: - あなたはループ変数の上に閉じている

答えて