2015-07-21 82 views
0

我真的写在C#程序跟踪CPU使用率,但我不能得到一个错误解决,无法隐式转换乌龙为int

“无法隐式转换乌龙为int”。下面

代码:

 int i; 
     i = 0; 
     try 
     { 
      ManagementClass cpuDataClass = new ManagementClass("Win32_PerfFormattedData_PerfOS_Processor"); 

      while (true) 
      { 
       ManagementObjectCollection cpuDataClassCollection = cpuDataClass.GetInstances(); 
       foreach (ManagementObject obj in cpuDataClassCollection) 
       { 
        if (obj["Name"].ToString() == "_Total") 
        { 
         i = Convert.ToUInt64(obj["C1TransitionsPersec"]); 
        } 
       } 
       Thread.Sleep(100); 
      } 
     } 
     catch (ThreadAbortException tbe) 
     { 

     } 


     progressBar1.Maximum = 100; 
     progressBar1.Minimum = 1; 

     progressBar1.Value = i; 
     } 

我真的相当新的C#,所以我希望这是一个简单的办法,任何人都可以帮助我在这?

+3

而不是int i;做我的; – Yohannes

+0

修复了上述主要错误,但现在progressBar1.value发生了该错误 –

+0

progressBar1.Value =(int)i; //阅读更多关于在这里投射https://msdn.microsoft.com/en-us/library/ms173105.aspx – Yohannes

回答

0

错误信息本身就已说明..

iintConvert.ToUInt64回报ulong并没有从之间要ulong因为int的int类型没有足够的范围,以保持一个ulong值没有隐式的谈话。

作为一种快速解决方案,将您的数据类型更改为ulong as;

ulong i; 

,但你仍然得到

progressBar1.Value = i; 

线路有问题,因为Value propertyint类型。即使您将其转换为(int)i,如果您的i大于int.MaxValue或小于int.MinValuechecked模式,您将得到不同的值。

0

YTAM的扬声器工作原理:

ulong i; ProgessBar1.value =(int)i;

相关问题