0

これを使用してルート フォルダーを選択し、このファイルを自分のフォルダーに追加する前に各ディレクトリから最新のファイルを取得してlistboxいます。まだファイルを検索している間に UI を更新するために、現在のディレクトリを知る方法があるのだろうかと思います。

var rootDirFile = Directory
                        .EnumerateFiles(pathToSearch, "*.pcap", SearchOption.TopDirectoryOnly)
                        .OrderByDescending(f => File.GetCreationTime(f))
                        .Take(1);

                    var allNewestFilesOfEachFolder = Directory
                        .EnumerateDirectories(pathToSearch, "*.*", SearchOption.AllDirectories)
                        .Select(d => Directory.EnumerateFiles(d, "*.pcap")
                            .OrderByDescending(f => File.GetCreationTime(f))
                            .FirstOrDefault());

foreach (string tempFile in rootDirFile.Concat(allNewestFilesOfEachFolder))
{
   //add the file
}
4

2 に答える 2

0

プロパティを に設定してBackgroundWorkerを介してコードを呼び出し、イベントを処理するのがおそらく最も簡単です。WorkerSupportsProgresstrueReportProgress

于 2013-01-29T11:47:32.733 に答える
0

以下のコードが問題の解決に役立つことを願っています

// Observable collection is the best choice to bind to the UI elements it automatically refreshes the changes in the UT whenever the data modifies. 

    ObservableCollection<string> objList = new ObservableCollection<string>();

          //Bind this ObservableCollection to the UI Element with TwoWay binding

          var rootDirFile = Directory.EnumerateFiles(pathToSearch, "*.pcap", SearchOption.TopDirectoryOnly).OrderByDescending(f => File.GetCreationTime(f)).Take(1);
           // add to the observable collection

          var allNewestFilesOfEachFolder = Directory
                        .EnumerateDirectories(pathToSearch, "*.*", SearchOption.AllDirectories);

           // Instead of Iterating the Directory in a single time, seperate the task and iterate folder by folder basis.

            foreach (string obj  in allNewestFilesOfEachFolder )
            {
                var dir = Directory
                        .EnumerateFiles(obj, "*.pcap", SearchOption.TopDirectoryOnly)
                        .OrderByDescending(f => File.GetCreationTime(f))
                        .Take(1);    

                // add to the observable collection , it will automatically reflects the changes in the UI            

            }

バインド コードも必要な場合はお知らせください。簡単に説明します

于 2013-01-29T13:36:18.750 に答える