我正在使用DirectoryInfo的GetFiles(“ *”,SearchOption.AllDirectories)方法来获取目录中的所有文件。然后,我遍历所有文件并调用file.Length以获取原始目录的完整大小。随着应用程序运行,该目录应该会增加。
检查目录大小属于经常运行的定期任务。
这是奇怪的部分。当我对此进行测试时,我看到目录大小从不应该增加。如果我在循环中设置一个断点,我可以看到它被击中了,但是它只是报告陈旧的文件,从不显示它增加。
真正奇怪的是,如果我设置了相同的断点,并且这次从Windows资源管理器中右键单击目录,选择“属性”,并允许应用程序继续运行,则应用程序将识别出目录大小正在增加,并且报告正确的值。
我不确定该细节是否会有所帮助,但是第一次选择“属性”时,我会看到过时的大小,第二次选择时,我会看到正确的大小。但是我只需要选择一次它,应用程序就可以开始认识到它已经增长。
我认为这是由于某些我不知道的缓存所致。不过,我一直在DirectoryInfo对象上使用Refresh()方法,但无济于事。
任何人都知道发生了什么事吗?
编辑:添加代码
获取目录大小的代码:
GetDirectorySize(DirectoryInfo directory)
{
directory.Refresh(); // Have tried with and without this line
long size = 0;
FileInfo[] files = directory.GetFiles("*", SearchOption.AllDirectories);
foreach (FileInfo file in files)
{
size += file.Length;
}
return size;
}