【发布时间】:2019-07-25 20:07:46
【问题描述】:
使用 .NET 4.7,参考源 here。根据文档,如果 counterName 不存在,构造函数 public PerformanceCounter (string categoryName, string counterName, string instanceName, bool readOnly); 应该抛出 InvalidOperationException。
但正如您从源代码中看到的那样,它只检查计数器是否为只读。例如,这返回就好了:
new PerformanceCounter("ExistingCategory","NameDefinitelyDoesntExist", "ExistingInstance, false)`
那么,我以后会遇到运行时异常吗?否则我假设只要计数器是可写的并且类别名称存在,相应的性能计数器就不需要在本地机器上实际存在。
我想这样做只是为了我可以使用性能计数器编写一些代码,这些代码将在许多机器上运行,而无需费力地确保计数器存在于每台机器上。
【问题讨论】:
-
这背后更大的想法是缺少性能计数器是很正常的。 For example,需要先使用 lodctr.exe 实用程序安装大量 .NET 框架计数器。写这样一个计数器是没有问题的,没有任何反应。不需要额外的代码,很容易。阅读是个问题,现在你不能再忽视它的缺失了。