2011-04-25 56 views
0

我在嘗試使用進度條顯示當前CPU和內存使用情況時出錯。該代碼似乎是正確的,因爲它與標籤一起工作,但我收到一個錯誤「無法轉換爲int」,那麼如何將性能計數器的數據轉換爲int以便它可以顯示在進度條中?我嘗試使用System.Convert.ToInt32(cpuCounter);,但它沒有爲我工作。這裏是我的代碼:如何將性能計數器的輸出轉換爲int中的int

PerformanceCounter ramCounter; 
     ramCounter = new PerformanceCounter("Memory", "Available MBytes"); 
     ramCounter.NextValue(); 
     progressBar1.Value = ramCounter; 

     PerformanceCounter cpuCounter; 
     cpuCounter = new PerformanceCounter(); 
     cpuCounter.CategoryName = "Processor"; 
     cpuCounter.CounterName = "% Processor Time"; 
     cpuCounter.InstanceName = "_Total"; 
     cpuCounter.NextValue(); 
     progressBar2.Value = cpuCounter; 

謝謝!

回答

2

您需要結果PerformanceCounter.NextValue() - 你目前忽略它:

float value = cpuCounter.NextValue(); 
progressBar2.Value = (int) value; 

你要檢查,當然預期值的範圍 - 你可能想擴展它。

另一種選擇是使用RawValue屬性,它是一個long

+0

太好了!謝謝。你是對的,我確實需要擴展輸出,但我對如何做到這一點毫無頭緒:(任何想法?:) – llk 2011-04-25 10:19:52

+0

@Shadowalker:你需要給我們更多的信息 - 基本上解決你想要的輸出範圍成爲,輸入範圍是什麼,然後適當地相乘和相加。 – 2011-04-25 11:05:42

0

您不應該將性能計數器實例指定給您的進度條,而是將其值指定給您的進度條。該值本身是Int64。

progressbar1.Value = (Int32) ramCounter.RawValue; 

你的, 阿洛伊斯·克勞斯