Jes*_*lin 5 .net c# windows naming performancecounter
我正在尝试使用性能计数器来确定我的应用程序发送或接收的字节数.我按照此处找到的建议解决方案:计算带宽,但我的应用程序实例未显示在".NET CLR网络"类别中.异常消息:
"实例'ApplicationName [8824]'在指定的类别中不存在"
(我已经<performanceCounters enabled="true"/>在我的App.config中添加了它仍然在一些网络活动后找不到)
所以我启动了性能监视器,所以我亲眼看到错误.正如预期的那样,我的应用程序没有出现在.NET CLR Networking类别中,但幸运的是可以在.NET CLR Networking 4.0.0.0类别中找到它.
但是,我的问题是我无法弄清楚如何生成实例名称.这是我在性能监视器中看到的实例的名称:ApplicationName.exe_p4952_r15_ad1.
到目前为止,我已经发现第一部分必须由ProcessName和PID组成,但我不知道最后两部分("r15"和"ad1")的部分来自何处.
有人知道最后两件可能是什么吗?
一种解决方案是枚举".NET CLR Networking 4.0.0.0"类别中找到的所有实例并搜索ApplicationName.exe_PID*,但更愿意直接查找正确的名称(如果可能).
检查此链接以获取有关如何构建该名称的更多信息。简而言之,“rXX”是执行代码的公共语言运行时(实例)的运行时 ID。
建立这一新的命名约定是为了在并行场景中(一个进程中有多个 CLR 实例;这是从 .NET 4.0 开始的一项新功能),您实际上可以区分性能计数器。
上面的页面上没有描述“adXX”,但从缩写词来看,我认为它代表应用程序域。该数字可能是应用程序域的AppDomain.Id 。