当前进程的性能计数器CPU使用率超过100我想显示我的多线程应用程序(在多核处理器上工作)的CPU使用率。我想在任务管理器附近接收号码。但我得到的数字超过100%。甚至超过500%。是的,我知道,对于“进程”类别的计数器“%ProcessorTime”,我需要拆分为Environment.ProcessorCount或“NumberOfLogicalProcessors”(我的配置相同)。此操作后的结果是500%。我在具有不同硬件(i7、i5、Core2)和软件配置(具有所有更新的Windows7SP1、具有所有更新的Windows2008R2SP1)的不同计算机上测试了这个示例,但遇到了同样的问题。publicstaticclassSystemInfo{privatestaticProcess_thisProc;私有静态布尔HasData=false;私有静态PerformanceCounter_processTimeCounter;privatestaticvoidInit(){如果(HasData)返回;if(CheckForPerformanceCounterCategoryExist("Process")){_processTimeCounter=newPerformanceCounter();_processTimeCounter.CategoryName="进程";_processTimeCounter.CounterName="%处理器时间";_processTimeCounter.InstanceName=FindInstanceName("进程");_processTimeCounter.NextValue();}MaximumCpuUsageForCurrentProcess=0;有数据=真;}privatestaticboolCheckForPerformanceCounterCategoryExist(stringcategoryName){returnPerformanceCounterCategory.Exists(categoryName);}publicstaticstringFindInstanceName(stringcategoryName){stringresult=String.Empty;_thisProc=Process.GetCurrentProcess();if(!ReferenceEquals(_thisProc,null)){if(!String.IsNullOrEmpty(categoryName)){if(CheckForPerformanceCounterCategoryExist(categoryName)){PerformanceCounterCategory类别=newPerformanceCounterCategory(categoryName);字符串[]实例=category.GetInstanceNames();stringprocessName=_thisProc.ProcessName;if(instances!=null){foreach(stringinstanceininstances){if(instance.ToLower().Equals(processName.ToLower())){result=instance;休息;}}}}}}}返回结果;}publicstaticintCpuUsageForCurrentProcess{get{Init();,null)){int结果=(int)_processTimeCounter.NextValue();结果/=Environment.ProcessorCount;//NumberOfLogicalProcessors//对我来说相同if(MaximumCpuUsageForCurrentProcess
