CPU usage in .net core (at least on Windows)

2020-08-12 05:54发布

So PerformanceCounter is gone in dotnet core. I understand it was because it was not Linux-compatible.

This comment here: ( What is the story of Performance Counters for .NET Core? ) seems to suggest that if I was willing to run it only on Windows I could "make use of Windows-specific features", but I don't know how I could integrate that in dotnet core.

The reason I am willing to do this workaround is to keep the dotnet core codebase so I don't have to migrate once there is a cross-platform solution for PerformanceCounter.

So to summarize my question: how can I run the CPU usage in dotnet core when running on Windows?


Other relevant posts that I've found:

  • This solution seems to suggest that Process.GetCurrentProcess() would be enough, which I don't quite understand (PerformanceCounterprovided the full CPU usage for the machine).

  • Looping through all processes (as this other post seem to suggest?) is not feasible (it throws an exception for some processes) and it looks pretty slow as well which is a problem for my use case.

1条回答
孤傲高冷的网名
2楼-- · 2020-08-12 06:36

As of .NET Core 3.0, the Performance Counter APIs are once again part of the BCL and support Linux too:

查看更多
登录 后发表回答