线程具有相同的参数

时间:2015-01-19 19:28:51

标签: c# multithreading

我用线程递归函数调用。但不行,因为所有线程都有相同的参数:问题是我。所有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();
 }

我如何修复,所有线程都有不同的参数。

1 个答案:

答案 0 :(得分:0)

这是因为lambda对i进行了闭包,因此lambda中的代码总是看到结束i循环的for的值,因为&#39;是lambda运行时i的值。这里有更多信息:

http://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closing-over-the-loop-variable-considered-harmful.aspx