C# 我不知道';我不知道为什么';s正在抛出System.ArgumentOutOfRangeException
我想知道为什么会出现这个错误,但我不能。我认为一切都没问题,但在某个点上,readTest的值“I”是==2。这不应该。。。listW有2个对象,“i”应该仅为0和1。我不知道2是从哪里来的。我做错什么了吗?我做了一些测试,I=2只发生在readTest。发生了什么事 谢谢大家的关注C# 我不知道';我不知道为什么';s正在抛出System.ArgumentOutOfRangeException,c#,multithreading,C#,Multithreading,我想知道为什么会出现这个错误,但我不能。我认为一切都没问题,但在某个点上,readTest的值“I”是==2。这不应该。。。listW有2个对象,“i”应该仅为0和1。我不知道2是从哪里来的。我做错什么了吗?我做了一些测试,I=2只发生在readTest。发生了什么事 谢谢大家的关注 public void readTest(int i) { for (int j = 0; j != leftListList[i].getKeyValues().Lengt
public void readTest(int i)
{
for (int j = 0; j != leftListList[i].getKeyValues().Length; j++)
{
string read = ws.Read(listW[i], wi[i].GetKey(), leftListList[i].getKeyValues()[j]);
WsRead wsRead = wi[i].BuildRead(read, leftListList[i].getKeyValues()[j]);
readList.Add(wsRead);
Console.WriteLine("READ: " + leftListList[i].getKeyValues()[j]);
}
}
public void threadTest()
{
for (int i = 0; i != listW.Length; i++)
{
Thread t = new Thread(() => readTest(i));
t.Start();
}
}
引入一个局部变量,例如索引:
for (int i = 0; i < listW.Length; i++) // i < listW.Length is more readable
{
int index = i;
...
else
{
// now each thread has its own index
Thread t = new Thread(() => readTest(index));
t.Start();
}
}
for(int i=0;ireadTest(index));
t、 Start();
}
}
当线程
最终启动时(创建一个新线程需要时间),循环完成,因此i==2
您有一个野生的否则
正在运行。查看foreach
循环,它们会让您的代码更具可读性。天哪!非常感谢你!你是我的救星!