File.Delete("D:\\filler.tmp"); // now %free space is 41
var freeSpaceCounter=new PerformanceCounter("LogicalDisk", "% Free Space", "D:");
freeSpaceCounter.NextSample();
Console.WriteLine(freeSpaceCounter.NextValue()); // returns 41
freeSpaceCounter.Dispose();
freeSpaceCounter.Close();
Thread.Sleep(1000);
Process p = Process.Start("fsutil", "file createnew d:\\filler.tmp 16000000000");
p.WaitForExit(); // now % free space is 1
Thread.Sleep(1000);
freeSpaceCounter = new PerformanceCounter("LogicalDisk", "% Free Space", "D:");
freeSpaceCounter.NextSample();
Console.WriteLine(freeSpaceCounter.NextValue()); // returns 41
Console.WriteLine(freeSpaceCounter.NextValue()); // returns 41
Thread.Sleep(1000);
freeSpaceCounter.NextSample();
Console.WriteLine(freeSpaceCounter.NextValue()); // returns 41
Console.WriteLine(freeSpaceCounter.NextValue()); // returns 41
爲什麼當實際值降到1時它會一直返回41?我怎樣才能多次獲得當前值?性能計數器NextValue返回相同的前一個值
我發佈的代碼在本地以及遠程機器上都有類似的行爲。我需要查詢遠程計算機上的可用磁盤空間,因此我無法使用DriveInfo類。 –
但是您必須使用PerformanceCounters嗎? WMI如何呢? –
如果WMI在遠程機器上卸載會怎麼樣 –