【发布时间】:2016-06-15 00:14:52
【问题描述】:
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\\");
然后我可以报告计数,但这是在过程的最后。 我想报告两次进度。第一次获取目录时:
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()
}
在此处实时报告文件名和文件数。
问题是因为它是静态的,所以我不能从类内部调用任何控件,而不是 backgroundworker 和标签。
【问题讨论】: