我在c#中编写了一个跟踪CPU使用情况的程序,但我无法解决错误,
"不能隐含地将Ulong转换为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#相当陌生,所以我希望这是一个简单的解决方案,任何人都可以帮助我吗?
答案 0 :(得分:1)
错误信息不言自明..
i
为int
但Convert.ToUInt64
返回ulong
,ulong
与int
之间没有隐式对话,因为int类型没有没有足够的范围来保持ulong
值。
作为快速解决方案,请将您的数据类型更改为ulong
as;
ulong i;
但是你仍然遇到问题
progressBar1.Value = i;
自Value
property int
类型以来行。即使您将其转换为(int)i
,如果i
在int.MaxValue
模式下大于int.MinValue
或小于checked
,您也会得到不同的值。< / p>
答案 1 :(得分:0)
YTAM的awnser作品:
ulong i;
ProgessBar1.value = (int)i;