public class DirectoryIterator
{
public static int Iterate(string root)
{
var iterator = new DirectoryIterator();
iterator.iterate(root);
return iterator.count;
}
private void iterate(string root)
{
try
{
foreach (string directory in Directory.EnumerateDirectories(root))
iterate(directory);
foreach (string file in Directory.EnumerateFiles(root, "*.txt"))
{
// load(file);
++count;
// Now count is the actual number of files processed,
// so you can use it for updateProgress()
}
}
catch
{
}
}
private int count;
private DirectoryIterator() { }
}
そして、それを使用して:進捗状況を静的クラスのラベルまたは背景担当者に報告するにはどうすればよいですか?
int count = DirectoryIterator.Iterate("C:\\temp\\");
をそれから私は、カウントを報告することができますが、それはプロセスの最後にあります。 進捗状況を2回報告したいと思います。それはディレクトリを取得の最初の時間:
foreach (string directory in Directory.EnumerateDirectories(root))
iterate(directory);
progresschangedイベントに、ここでディレクトリ名を報告するようにしても、ディレクトリの数をカウントし、リアルタイムでカウントを報告します。
第二:
foreach (string file in Directory.EnumerateFiles(root, "*.txt"))
{
// load(file);
++count;
// Now count is the actual number of files processed,
// so you can use it for updateProgress()
}
ここでリアルタイムでのファイル名やファイルの数を報告すること。
問題は静的なので、私はクラスの中から、背景労働者ではなく、ラベルではないコントロールを呼び出すことはできません。