我有这个简单的代码:(我在 linqpad 中运行)
void Main()
{
for ( int i=0;i<10;i++)
{
int tmp=i;
new Thread (() =>doWork(tmp)).Start();
}
}
public void doWork( int h)
{
h.Dump();
}
该int tmp=i;
行用于捕获变量-因此每次迭代都有自己的值。
2个问题:
1)数字不是连续的,而线程执行是!
2)有时我得到的数字少于10 个!
以下是一些执行输出:
问题:
1)为什么会发生案例1,我该如何解决?
2)为什么会发生案例2,我该如何解决?