この特定のコードブロックを修正するお手伝いができますか?私のC#プログラムにメモリの問題と重複があります
これは私の問題です。 Windowsエクスプローラと同様の方法で動作するプログラムを作成しました。このプログラムは、ハードドライブ内のファイルとフォルダの階層構造と、コンピュータ内の他のすべてのドライブを提供します。
このコードは、プログラムをスムーズに実行することに問題があるようです。私がプログラムを始めると、プログラムは非常に遅く始まり、最終的にロードするまでに時間がかかります。これは、私のプログラムが最終的にロードする前にすべてのファイルとフォルダを通過しているという事実によるものです。これは、大量のデータを持つコンピュータにとっては煩わしくなる可能性があります。
私はtryブロックで2行をコメントアウトすることで問題を解決できます。しかし、プログラムを実行してドライブを開くと、重複してしまいます(例:C:/ドライブを展開してからC:/ドライブを折りたたむと、C:/ドライブの複製がプログラムに表示されます)
以下は、以下の画像です。
image1の
画像2
そして、これは私が話しているコードの一部です。もし皆さんが完全なコードをお望みなら私に知らせてください。
private void GetDirectories(DirectoryInfo[] subDirs, TreeNode nodeToAddTo)
{
TreeNode aNode;
DirectoryInfo[] subSubDirs;
foreach (DirectoryInfo subDir in subDirs)
{
aNode = new TreeNode(subDir.Name, 0, 0);
aNode.Tag = subDir;
aNode.ImageKey = "folder";
try
{
//subSubDirs = subDir.GetDirectories();
//GetDirectories(subSubDirs, aNode);
nodeToAddTo.Nodes.Add(aNode);
}
catch(Exception e)
{
Console.WriteLine("none");
}
}
}
ディレクトリ全体を再帰的にマップしないと、結果として実行時間の長いコードになります。代わりに、フォルダが展開されるとすぐにフォルダを読み込みます。 また、コードに問題があり、許可されていないディレクトリがあります。 – LuckyLikey