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 Administrator 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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With