There are several different processor information that you can obtain: Number of physical processors, number of cores, and number of logical processors, which can be different. Two dual-core hyper-threading (Enabled) processors are available on two physical processors, four cores, and eight logical processors.
The number of logical processors isEnvironment
Class, but other information can only be obtained through WMI (you may need to install some patches or service packages:
Physical processor:
foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get()){ Console.WriteLine("Number Of Physical Processors: {0} ", item["NumberOfProcessors"]);}
Kernel:
int coreCount = 0;foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_Processor").Get()){ coreCount += int.Parse(item["NumberOfCores"].ToString());}Console.WriteLine("Number Of Cores: {0}", coreCount);
Logic processor:
Console.WriteLine("Number Of Logical Processors: {0}", Environment.ProcessorCount);
Or
foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get()){ Console.WriteLine("Number Of Logical Processors: {0}", item["NumberOfLogicalProcessors"]);}
Address: http://www.itstrike.cn/Question/how-to-find-the-number-of-cpu-cores-via-net-csharp