РЕДАКТИРОВАТЬ - Сведения о счетчике производительности
Вам нужно будет подождать более 1000 мс, чтобы увидеть изменение свободного дискового пространства с помощью PerformanceCounter
.Частота обновления счетчика PerformanceCounter("LogicalDisk", "% Free Space")
составляет 300 секунд.Повторный вызов .NextValue()
в течение этого пятиминутного интервала даст тот же результат, что и вы.Этот показатель основан только на некоторых проведенных мною тестах, поэтому я не могу говорить о согласованности этого значения на различных платформах.
Если вам нужен более короткий период выборки, все, что я могу предложить, - это закрыть приложение после того, как вы прочитали NextValue
.При повторном открытии приложения вы увидите, что последний экземпляр PerformanceCounter
выбрал последнюю меру дискового пространства.Я не верю Close
и Dispose
или даже добавляя using
, и создание нового экземпляра имело тот же эффект.Я не слишком углублялся в детали этой проблемы, так как у меня был выбор использовать следующие опции:
DriveInfo
В качестве альтернативы, если вы не связаны сСчетчик производительности и отслеживания локального диска можно использовать:
System.IO.DriveInfo driveInfo = new DriveInfo("D:");
И driveInfo.TotalFreeSpace
или другие свойства класса DriveInfo
.
РЕДАКТИРОВАТЬ - WMI
Если вам нужно также проверить удаленные машины, вы можете использовать WMI.Может быть, следующее будет работать для вас.
System.Management.ManagementScope scope =
new System.Management.ManagementScope(@"\\remoteMachine\root\cimv2");
ObjectQuery query =
new ObjectQuery("SELECT Name, Freespace FROM Win32_LogicalDisk WHERE DriveType=3");
ManagementObjectSearcher search = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection results = search.Get();
foreach (ManagementObject mo in results)
{
Console.WriteLine("Drive: {0} -- Free Space: {1}", mo["Name"], mo["FreeSpace"]);
}