Googleでいくつかの例を検索しましたが、必要なものを実際に見つけることができませんでした。C#Parallel/Multithread a while
私は、このwhileループがありますので、
StreamReader ImportFile = new StreamReader(@"c:\users\matthew\desktop\test.txt");
string line;
while ((line = ImportFile.ReadLine()) != null)
{
doneTotal++;
string[] info = line.Split('-');
string username = info.Length >= 1 ? info[0] : null;
string file = info.Length >= 2 ? info[1] : null;
myfunc(username, file);
}
を、myfunc関数は速いが、私のために十分に高速ではありません。ループ中に並列またはマルチスレッドを実行するにはどうすればよいですか?
ありがとうございました。
あなたのプロセスが遅いのはI/Oだとはっきりしています。パフォーマンスを向上させるためにI/Oをマルチスレッド化することはできません。ファイル全体を1つの文字列として読み込み、各行を別々に処理します。 – Gus
あなたはすべての行を読み取ってから、並列foreachでそれらを反復できませんでしたか? –
@Gus&Steven私が使用するファイルは、オープンには大きすぎることがあるので、大きなファイルを開く別の方法がない限り、これを使用しなければならないと思いますか? – wtm