无法隐式将Ulong转换为int

时间:2015-07-21 08:27:46

标签: c#

我在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#相当陌生,所以我希望这是一个简单的解决方案,任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

错误信息不言自明..

iintConvert.ToUInt64返回ulongulongint之间没有隐式对话,因为int类型没有没有足够的范围来保持ulong值。

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

ulong i;

但是你仍然遇到问题

progressBar1.Value = i;
Value property int类型以来

行。即使您将其转换为(int)i,如果iint.MaxValue模式下大于int.MinValue或小于checked,您也会得到不同的值。< / p>

答案 1 :(得分:0)

YTAM的awnser作品:

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