Я использую метод DirectoryInfo GetFiles ("*", SearchOption.AllDirectories), чтобы получить все файлы в каталоге. Затем я перебираю все файлы и вызываю file.Length, чтобы получить полный размер исходного каталога. Этот каталог должен увеличиваться по мере запуска приложения.
Проверка размера каталога выполняется в периодической часто выполняемой задаче.
Вот странная часть. Когда я запускаю тест для этого, я вижу, что размер каталога никогда не увеличивается, когда он должен быть. Если я установлю точку останова внутри цикла, я увижу, что она попала, но она сообщает только об устаревших файлах, а не показывает ее увеличение.
Действительно странная часть в том, что если я установлю ту же точку останова и на этот разщелкните правой кнопкой мыши по каталогу в проводнике Windows, выберите «Свойства» и дайте приложению продолжить, приложение распознает, что размер каталога увеличивается, и сообщит правильные значения.
Я не уверен, поможет ли эта деталь, но в первый раз, когда я выбираю Свойства, я вижу устаревший размер, а во второй раз, когда я выбираю его, я вижу точный размер. Но мне нужно только выбрать его один раз, чтобы приложение начало осознавать, что оно выросло.
Я думаю, это из-за некоторого кеширования, о котором я не знаю. Я использовал метод Refresh () для объекта DirectoryInfo, но безрезультатно.
Кто-нибудь знает, что происходит?
РЕДАКТИРОВАТЬ: добавление кода
Код для получения размера каталога:
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;
}