0
を解放しません。たとえば、ループ内のフォルダを削除してavailablefreespace
をチェックすると、ギガバイト以下のデータを削除する必要があるときに、ギガバイトとギガバイトのデータが削除されてしまいます。削除フォルダがほぼ同じままスペースのすぐ
//Delete in secondary storage
string secondaryRoot = Path.GetPathRoot(settings.SecondaryFeatureExtractDirectory);
DriveInfo secondaryDrive = new DriveInfo(secondaryRoot);
DirectoryInfo secondaryInfo = new DirectoryInfo(settings.SecondaryFeatureExtractDirectory);
while ((secondaryDrive.TotalSize - secondaryDrive.AvailableFreeSpace)/secondaryDrive.TotalSize * 100 < settings.DriveFreePercentage)
{
logger.LogInformation("checkForCleanup before delete: {@Freespace}", secondaryDrive.AvailableFreeSpace);
secondaryThresholdPassed = true;
DirectoryInfo oldestDir = secondaryInfo.EnumerateDirectories().OrderBy(x => x.LastWriteTimeUtc).FirstOrDefault();
if (oldestDir == null) break;
oldestDir.Delete(true);
logger.LogDebug("checkForCleanup deleted: {@DirectoryName}", oldestDir.FullName);
logger.LogInformation("checkForCleanup after delete: {@Freespace}", secondaryDrive.AvailableFreeSpace);
Thread.Sleep(1);
}
C#とdotnetcoreを使用していたことはありますか?
これは、100か0 –
は、あなたがそれを説明することができ@mwwhitedのどちらかになります、それので整数演算を使用するつもりですか?私は '(secondaryDrive.TotalSize - secondaryDrive.AvailableFreeSpace)/ secondaryDrive.TotalSize * 100'がどのように0または100に制限されるのか理解していません。 – Theyouthis
これらの値はすべて整数値です(実際は長いですが、同じ考え方です)。したがって、小数点の値はありません。 '(100-90)/ 100'を考えてください。これは '.9'に等しくなりますが、整数値である場合は最大の整数は' 0'です –