【发布时间】:2018-01-22 08:44:11
【问题描述】:
所以PerformanceCounter 在 dotnet 核心中消失了。我知道这是因为它不兼容 Linux。
这里的评论:(What is the story of Performance Counters for .NET Core?)似乎表明,如果我愿意只在 Windows 上运行它,我可以“利用 Windows 特定的功能”,但我不知道如何将其集成到dotnet 核心。
我愿意做这个变通办法的原因是为了保留 dotnet 核心代码库,这样一旦有 PerformanceCounter 的跨平台解决方案,我就不必迁移。
所以总结一下我的问题:在 Windows 上运行时,如何在 dotnet core 中运行 CPU 使用率?
我发现的其他相关帖子:
This solution 似乎暗示
Process.GetCurrentProcess()就足够了,我不太明白(PerformanceCounter提供了机器的完整 CPU 使用率)。-
循环遍历所有进程(如this other post seem to suggest?)是不可行的(它会为某些进程引发异常),而且它看起来也很慢,这对我的用例来说是个问题。
【问题讨论】:
-
我们已经将性能计数器的东西从 4.7 移植到 dotnet 标准,并且我们也开始使用 linux 版本(在一个分支中)......它适用于我们的用例(主要是 Windows 在时刻) - github.com/Polystream/System.Diagnostics.PerformanceCounters
-
@ScottPerham 这太棒了!非常感谢,会很有用的。
-
有什么理由不使用官方的Microsoft.Windows.Compatibility 包吗? nuget.org/packages/Microsoft.Windows.Compatibility
标签: c# .net .net-core .net-standard