You could use WMI (Windows Management Instrumentation)
Example:
ManagementScope managementScope = new ManagementScope("\\\\.\\ROOT\\cimv2");
ObjectQuery objectQuery = new ObjectQuery("SELECT * FROM Win32_PerfFormattedData_PerfProc_Thread");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(managementScope, objectQuery);
ManagementObjectCollection objectCollection = searcher.Get();
foreach (ManagementObject m in objectCollection)
{
Console.WriteLine("ContextSwitchesPersec : {0}", m["ContextSwitchesPersec"]);
}