ディレクトリを再帰してツリーを構築するメソッドがあります。
public void RecurseFolders(TreeNode mainNode) {
DirectoryInfo nodeDir = new DirectoryInfo(mainNode.Tag.ToString());
try {
foreach (var dir in nodeDir.GetDirectories()) {
int index = GetSystemIcon(dir.FullName, treeView1.ImageList, false);
var subNode = new TreeNode(dir.Name, index, index);
subNode.Tag = dir.FullName;
mainNode.Nodes.Add(subNode);
RecurseFolders(subNode);
}
} catch (UnauthorizedAccessException err) {
Console.WriteLine(err);
}
}
これでやりたいことは、そこからParallel.ForEachを記述する方法を見つけることですが、私の LINQ の知識はあまりにも未熟です。
明らかにTreeNode
、スレッドに を渡すことはできないため、署名をより一般的なものに変更しました。これは私が得た限りです:
public string[] RecurseFolders(string dirString) {
List<string> list = new List<string>();
DirectoryInfo nodeDir = new DirectoryInfo(dirString);
Parallel.ForEach(nodeDir.GetDirectories(), dir => {
// how do I write this?
});
return list.ToArray();
}
どうやって終わらせるの?
編集:
これは、ネットワーク ストレージ ドライブからディレクトリとファイルのリストを取得しています。現在、ネットワークを介して情報を取得することがボトルネックになっていますが、並列処理のテクニックを学ぶには良い場所です。