我用线程递归函数调用。但不行,因为所有线程都有相同的参数:问题是我。所有i = st。后来所有递归功能都无法正常工作。
threads = new Thread[st];
for (int i = 1; i <= st; i++)
{
Thread t1 = new Thread(() =>
{
rek_md5(crke, i, new char[i], 0, md5Hash);
});
t1.Name = i.ToString();
threads[i-1] = t1;
t1.Start();
}
我如何修复,所有线程都有不同的参数。
答案 0 :(得分:0)
这是因为lambda对i
进行了闭包,因此lambda中的代码总是看到结束i
循环的for
的值,因为&#39;是lambda运行时i
的值。这里有更多信息: