【发布时间】:2014-07-29 18:08:16
【问题描述】:
我正在阅读一个包含大约 200 个文件的文件夹。我认为是创建 4 个流以 4 到 1 1 循环读取文件。但是我不能通过数组错误控制。 这是示例:
FileInfo[] fileArray = _directoryInfo.GetFiles("*.txt");
for(int i = 0; i<fileArray.Length;i+=4)
{
Thread t1 = new Thread(function(fileArray[i]));
t1.Start();
Thread t2 = new Thread(function(fileArray[i+1]));
t2.Start();
Thread t3 = new Thread(function(fileArray[i+2]));
t3.Start();
Thread t4 = new Thread(function(fileArray[i+3]));
t4.Start();
}
但结果是在
收到的IndexOutOfRangeException
我检查 fileArray 有 200 个文件 txt。 我需要一个解决方案...
【问题讨论】:
-
除非您在每个循环结束时等待这 4 个线程,否则您将启动超过 4 个线程...
-
那是你的实际代码吗?那是
new Thread(function(fileArray[1+2]))行是正是吗?或者它实际上是一个 lambda 函数,更像:new Thread(() => function(fileArray[1+2]))?如果是后者,这可能是由于一个关闭问题,您的 所有/大多数 线程正在使用i的最后一个值执行(200+,所以查找fileArray[200], fileArray[201], fileArray[202], fileArray[203])
标签: c# multithreading for-loop