6
votes

Pourquoi mes compteurs de performance ne changeront-ils pas?

Je dois faire quelque chose de très faux ici. Je crée un compteur de performance personnalisé comme suit:

for (int i = 0; i < 10; i++)
{
    Console.WriteLine("Setting to "+i);
    myCounter.IncrementValue()
    Console.WriteLine("Next Value = "+myCounter.RawValue()); 
    Thread.Sleep(200);
}


0 commentaires

3 Réponses :


0
votes

Votre code a l'air bien. De mon exemple de travail, la seule différence est que j'appelle la méthode d'incrément après avoir défini le RAWVALUE.

PerformanceCounter myCounter = 
    new PerformanceCounter(counterCategory, counterName, false);

for (int i = 0; i < 10; i++)
{
    Console.WriteLine("Setting to "+i);
    myCounter.Increment();
    Thread.Sleep(200);
}

myCounter.Close();


2 commentaires

Nope, toujours une ligne plate, j'ai peur, avec incrémentation () et avec le réglage du Rawvalue.


Marrant. Je vais examiner dans la pause déjeuner.



1
votes

est-il possible au cours de vos tests que vous avez changé le nom du compteur? Votre code ne vérifie pas que la catégorie contient votre compteur - elle ne vérifie que si la catégorie existe et si elle ne crée pas la catégorie.

Si vous avez changé de noms de compteur depuis la première création de la catégorie, votre nouveau compteur n'existerait pas dans la catégorie et il vous manque peut-être une légère différence dans le nom du compteur lorsque vous le regardez dans le moniteur de performance. < / p>


3 commentaires

C'est une bonne idée, mais je supprime la catégorie avant de l'exécuter, il sera donc recréé, puis le nom de la catégorie et le nom de compteur sont conservés dans des chaînes utilisées pour la création et l'ouverture du comptoir.


Est-ce que cette partie d'un projet plus vaste? Lorsque j'ai pris votre code de la question et je l'ai enveloppé dans le principal vide statique (String [] args) méthode d'un projet de console, il fonctionnait sans modification. Je devais l'exécuter deux fois, une fois pour créer la catégorie afin que je puisse le trouver dans le moniteur de performance, puis une seconde fois pour regarder les valeurs change.


C'était dans une application de console (et pour amuser une page Web pour définir des valeurs brutes). J'ai fini par fermer le moniteur de performance et l'ouvrir à nouveau et lo, il a soudainement vu les changements. Il se peut que cela n'aime pas la surveillance juste après la création d'un compteur.



2
votes

Un suivi est en ordre. Il apparaît, sous Win7 de toute façon, que le moniteur de performance ne fonctionne pas comme prévu. Lorsque j'ai écrit le code de test, j'ai mis en pause la demande après avoir créé les comptoirs, afin de démarrer le moniteur Performance. Une fois que je l'ai laissé continuer, le moniteur n'a jamais changé ses compteurs, malgré le changement de comptoir sous-jacent.

Si je quitte ensuite le moniteur de performances et le redémarré, la dernière valeur de compteur dans le programme de test serait affichée, indiquant qu'il était défini correctement. Si j'ai ensuite exécuté le programme de test, changez simplement des valeurs, le moniteur Performance choisirait enfin les modifications.

Ainsi, le code, comme tout le monde indiqué est correct, il s'agissait du moniteur de performance Windows qui se comporterait mal.

Merci à tous pour vos réponses!


2 commentaires

Ou dans mon cas, un redémarrage.


@StephenkneNnedy merci ... Je ne sais pas pourquoi un redémarrage a résolu mon problème ...