这是问题所在。
我正在尝试将当前变量值传递给线程,是否可以不通过创建一些文本或对象来欺骗它?
在代码中是这样的
List<Computer> students = new List<Computer>();
void main()
{
for(int i=0; i<students.Count; i++)
{
Thread thread = new Thread(new ThreadStart(() => Call(students[i])));
thread.Start();
}
}
void Call(Computer obj)
{
MessageBox.show(obj.Name);
Doconnect(obj.ip);
}
我试图显示具有多个线程的每个名称,以便该应用程序也不会花费时间来连接...
对的,这是可能的。由于您使用的是lambda,因此需要一个局部变量来避免关闭问题:
for(int i = 0; i < students.Count; i++)
{
var student = students[i];
Thread thread = new Thread(new ThreadStart(() => Call(student))); // use local
thread.Start();
}
话虽这么说,最好只使用框架类型,例如Parallel.ForEach:
Parallel.ForEach(students, s => Call(s));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句