开发者

Reading performance counter from C#: Instance does not exist in the specified category

I'm trying to read a number of performance counters from a running .NET 4 application, from another .NET 4 application.

Some counters, such as Process\% Processor Time and Process\Private Bytes work fine. However, as soon as I try to read a performance counter from one of the .NET categories, such as .NET CLR Memory\# Gen 0 Collections, I get the following exception:

Instance 'MyApplication' does not exist in the specified Category

When I call:

new PerformanceCounterCategory(".NET CLR Memory").GetInstanceNames()

It returns a very small set of instances, and MyApplication is indeed not in the list. However, when I look at my performance counters in perfmon, the list of instances I see there for the same category/counter is much longer and DOES include MyApplication.

Does anyone know why the .NET counters are not visible to my application?

(Note: The monitored application is started by the monitoring application, so they definitely run in the same user account. I also tried starting my monitoring application as Admi开发者_开发问答nistrator and adding my account to the Performance Monitor Users group, to no effect.)


There are two settings for a project that can be relevant to your problem.

First and foremost, Project + Properties, Build tab, Platform target. On a machine with a 64-bit operating system, setting this to x86 will get you a list of instance names that do not include 64-bit processes. Perfmon.exe is a 64-bit process, it shows all instances, both 32-bit and 64-bit apps. Get the same behavior by setting the Platform target to AnyCPU, that's not the default anymore on Visual Studio 2010. Untick "Prefer 32-bit" if you see it.

Second is Project + Properties, Debug tab, "Enable the Visual Studio hosting process" option. When checked, you are debugging an process named yourapp.vshost.exe instead of yourapp.exe. That also affects the instance name, it will be yourapp.vshost. Not likely to be the problem in your specific case.

Be sure to update your question with this essential info if this guess wasn't accurate.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜