私は構造体を持っています:
public struct BaseFile
{
public string FileName;
public string Path; // this is not the full path. it is the fullPath of it's parent directory in other words.
}
そして私はクラスを持っています
public class MyFileDir // can be a file or directory
{
public string Name;
public string FullPath;
public List<MyFileDir> Children;
public bool IsDirectory;
// many more other properties
}
したがって、1つのスレッドでファイルを配置しLinkedList<BaseFile> myLinkedList
、別のスレッドでそれらのファイルのキャストを開始したいと思いますMyFileDir root
(LinkedListのアドレスは変更されないため、リストの代わりにlinkedListを使用しました。リストは、成長する必要があるたびにアドレスを変更します)。
他のスレッドがまだリンクリストにベースファイルを追加しているかどうかを知らせるbool変数IsRunningがあります。だから私は次のようなものを持っています:
var curNode = myLinkedList.First;
while (IsRunning)
{
if (curNode.Next == null) // wait until next node is not null
{
Thread.Sleep(100);
continue;
}
curNode = curNode.Next;
AddItemToTree(curNode.Value);
}
ご覧のとおり、メソッドの実装に問題がありますAddItemToTree
。基本的に、そのメソッドでツリーの構築を開始したいと思います。したがって、最初にルートを調べて、追加するディレクトリを検索しcurNode.Value
ます。私はそれをするのに苦労しています。