使用多线程读取和处理文件

时间:2014-07-29 18:08:17

标签: c# multithreading for-loop

我正在阅读一个包含大约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。 我需要一个解决方案......

1 个答案:

答案 0 :(得分:1)

for(int i = 0; i<fileArray.Length;i+=4)//Here is the problem

您检查i<fileArray.Length,但在循环内访问fileArray[i+3]

我不确定为什么一次启动4个帖子。你可以简单地写上面这样的代码:

for(int i = 0; i<fileArray.Length;i++)
{
    Thread t1 = new Thread(function(fileArray[i]));
    t1.Start();
}

另请注意,启动大量线程绝不是一个好主意,请记住,您的计算机只能同时执行N个线程数,其中N是核心数