私はこれについてSOからいくつかの異なる質問をすでに読みましたが、それでもそれを機能させることができませんでした。私はpublic static string[] files = Directory.GetFiles(CurrentDirectory, "*.wav", SearchOption.AllDirectories);
、ファイルストリームに渡されるファイルパスの配列を取得するために使用しています。ファイルストリームが実行する操作は、1つのスレッドがすべてのファイルを処理するだけで時間がかかりすぎていました。そこで、配列を分割して、それらの小さい配列を別のスレッドに渡すことにしました。
そのために使用していたコードは、別のSOの質問から取得し、分割配列を渡すために使用しましたが、最初の配列の1つのファイルでしか機能しませんでしたが、問題が何であったかはわかっています。
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());
(これは私が使用した方法とは異なり、覚えていないほど多くのことをいじっています。)これの問題は、すべてが1つの巨大なファイルパスとして扱われ、それぞれを取得するforeachループがあることです。小さい配列からのファイルですが、その中のすべてのファイルを1つとして扱い、検索から複数のファイルが返された場合にfilepathtoolong例外をスローしました。私の関数は配列を取り、それからforeach (string file in smallerArray)
それぞれに書き込むために使用します。私がする必要があるのは、ファイル配列を4つの小さな配列に分割し、次のように新しいスレッドを開始することですnew Thread(() => { DoWork(newArray); }).Start();
が、私が試したことは何も機能していません。