如何将文件路径数组划分为几个较小的数组?

0__*_*__0 1 .net c# linq

我已经从SO中读过几个不同的问题,但仍然无法使其发挥作用.我正在使用public static string[] files = Directory.GetFiles(CurrentDirectory, "*.wav", SearchOption.AllDirectories);一个文件路径数组,然后将其传递给文件流.只有一个线程处理所有文件,文件流所做的操作耗时太长.所以我决定拆分数组并将那些较小的数组传递给不同的线程.

我使用的代码来自另一个SO问题,并用它来传递split数组,但它只能在第一个数组中只使用一个文件,但我知道问题是什么:

var thing = from index in Enumerable.Range(0, files.Length) 
          group files[index] by index/600;
foreach(var set in thing)
    string.Join(";", set.ToArray());
Run Code Online (Sandbox Code Playgroud)

(这不完全是我使用它的方式,我已经把它弄得太乱了,我记不住了.)这个问题是所有东西都被视为一个巨大的文件路径,我有一个foreach循环,每个来自较小数组的文件,但它将其中的每个文件视为一个文件,当搜索返回多个文件时抛出filepathtoolong异常.我的函数接受一个数组然后foreach (string file in smallerArray)用来写入每个数组.我需要做的是将文件数组分成4个较小的数组并启动新的线程,new Thread(() => { DoWork(newArray); }).Start();但我尝试过的任何工作都没有.

Jon*_*eet 5

所以我决定拆分数组并将那些较小的数组传递给不同的线程.

听起来你正在努力做到这一点:)让框架为你处理Parallel.ForEach:

Parallel.ForEach(files, file => 
{
    // Do stuff with one file
});
Run Code Online (Sandbox Code Playgroud)