I did not like having to add in the 1 second stall to all of the `PerformanceCounter` solutions. Instead I chose to use a `WMI` solution. The reason the 1 second wait/stall exists is to allow the reading to be accurate when using a `PerformanceCounter`. However if you calling this method often and refreshing this information, I'd advise not to constantly have to incur that delay... even if thinking of doing an async process to get it.
I started with the snippet from here
[To see links please register here]
and added a full explanation of the solution on my blog post below:
[Get CPU Usage Across All Cores In C# Using WMI][1]
[1]:
[To see links please register here]