2008-12-23 4 views
1

Dans le développement d'une application de la console de contrôle des performances, ce qui est passé dans la méthode GetCategories ?:compteur n'est pas seule instance, un nom d'instance doit être spécifiée

PerformanceCounter[] pcArr = pc.GetCounters(string instance); 

Lorsque vous utilisez le pas de surcharge param, une exception d'exécution est lancé:

Le compteur n'est pas une instance unique, un nom d'instance doit être spécifié.

En outre, comment décidez-vous entre une méthode utilitaire statique ou une méthode d'extension? Par exemple, je peux utiliser une certaine méthode d'utilité assez fréquemment, mais il serait préférable d'ajouter cela comme méthode d'extension afin de ne pas avoir à référencer un autre assemblage tout le temps.

Merci

+0

J'ai le même message d'exception quand j'appelle counter.NextValue() sur un USB PerformanceCounter – Loreno

Répondre

3

Vous devez spécifier un nom d'instance dans la méthode GetCounters(). Si vous regardez votre moniteur de performances sous Panneau de configuration -> Outils d'administration. Regardez la colonne 'Instance'. C'est ce que vous devez donner à la méthode. Tous les compteurs avec le même nom d'instance seront retournés. S'il n'y a rien dans cette colonne '---' alors c'est une instance unique et vous n'avez besoin de rien passer. Pour autant que je sache, la raison de 'instances' est qu'il peut y avoir plusieurs 'périphériques' à surveiller. Sous la catégorie de processeurs, vous pouvez avoir plusieurs instances, une pour chaque processeur, la mienne a un dual core, ainsi a '0', '1' et '_Total'. La mémoire est une instance unique (au moins sur ma machine).

Je demanderais votre méthode d'utilitaire statique ou une question de méthode d'extension séparément.

Questions connexes