Ausnahme: Instanz 'Name der Instanz' existiert nicht in der angegebenen Kategorie

9

Wenn ich Leistungsindikatoren wie folgt erstelle und verwende:

%Vor%

... Ich erhalte eine Ausnahme Instanz 'Name der Instanz' existiert nicht in der angegebenen Kategorie und versteht nicht warum.

P.S. Code

%Vor%

... in App.config enthalten.

    
Aleksandr Vishnyakov 29.04.2011, 13:30
quelle

5 Antworten

1

Ich habe zu früheren Posts hinzugefügt, dass Prozesse wie & lt; ProcessName & gt; _ & lt; ProcessId & gt; - Abhängig von dem Betriebssystem, auf dem Sie Ihre App ausführen (Win XP, Win Vista, Win 7, Win 2003 oder 2008 Server). Um eine zuverlässige Möglichkeit zur Identifizierung Ihres Prozessnamens zum Ermitteln anderer Leistungsindikatoren zu erhalten, könnte eine Funktion wie folgt aussehen:

%Vor%     
Wolfgang 05.04.2012, 15:42
quelle
1

Ich denke, Ihr Problem tritt auf, wenn mehrere Prozesse mit demselben Namen vorhanden sind. Was PerfMon dann tut, ist Anhängen # 1, # 2 usw. an den Prozessnamen. Das bedeutet, dass MyApp.exe zweimal ausgeführt wird, verursacht diese Ausnahme, wenn Sie versuchen, den Leistungsmonitor für "MyApp" zu lesen. Hier ist ein Link zu einer Möglichkeit, dies zu lösen: Leistungsindikatoren nach PID

    
Haukman 11.06.2011 08:06
quelle
0

Das ursprüngliche Format, das ein PID-Suffix (Registry ProcessNameFormat = 1) verwendet, scheint sich seit .NET 4.5 (msdn link ) zu "processame_pid_rid". Daher kann die angenommene Antwort, wie sie derzeit geschrieben wird, für diesen Fall möglicherweise nicht mehr funktionieren.

Diese Lösung sollte immer noch für die neueren Formate funktionieren:

Ссылка

Allerdings können alle diese übereinstimmenden Lösungen anfällig für eine Race-Bedingung sein, bei der sich der Instanzname aufgrund eines Prozesses ändert (# 9 wird # 8), nachdem der Instanzname ermittelt wurde, aber bevor die neue PerformanceCounter () zugewiesen wurde / p>

Es würde viel mehr Sinn machen, dass MS einen PerformanceCounter-Konstruktor bereitstellt, der ein Pid (und möglicherweise jetzt RuntimeId?) direkt akzeptiert, da sich die Instanznamen im laufenden Betrieb ändern können.

    
crokusek 25.04.2017 18:38
quelle
0

Hier ist meine Lösung für alle Prozesse und mehrere Prozessinstanzen:

%Vor%     
okarpov 09.02.2018 12:39
quelle
-1

Sie können diesen Code überprüfen

%Vor%     
quelle