2011-04-25 2 views
0

J'ai une erreur lorsque j'essaie d'afficher l'utilisation actuelle du processeur et de la mémoire en utilisant une barre de progression. Le code semble être correct car il fonctionne avec une étiquette, mais je reçois une erreur "Impossible de convertir en int" alors comment puis-je convertir les données du compteur de performance dans un int afin qu'il puisse être affiché dans une barre de progression? J'ai essayé d'utiliser System.Convert.ToInt32(cpuCounter); mais cela n'a pas fonctionné pour moi. Voici mon code:Comment convertir la sortie d'un compteur de performance en un int dans C#

PerformanceCounter ramCounter; 
     ramCounter = new PerformanceCounter("Memory", "Available MBytes"); 
     ramCounter.NextValue(); 
     progressBar1.Value = ramCounter; 

     PerformanceCounter cpuCounter; 
     cpuCounter = new PerformanceCounter(); 
     cpuCounter.CategoryName = "Processor"; 
     cpuCounter.CounterName = "% Processor Time"; 
     cpuCounter.InstanceName = "_Total"; 
     cpuCounter.NextValue(); 
     progressBar2.Value = cpuCounter; 

Merci!

Répondre

2

Vous devez le résultat de PerformanceCounter.NextValue() - vous êtes en train de l'ignorer:

float value = cpuCounter.NextValue(); 
progressBar2.Value = (int) value; 

Vous voulez vérifier la gamme des valeurs attendues bien sûr - vous pouvez bien vouloir l'escalader. Une autre option consiste à utiliser la propriété RawValue, qui correspond à long.

+0

Grand! Merci. Vous avez raison, j'ai besoin de mettre à l'échelle la sortie, mais je suis clueless sur la façon de faire cela :(Des idées? :) – llk

+0

@Shadowalker: Vous auriez besoin de nous donner plus d'informations - essentiellement travailler sur ce que vous voulez votre gamme de sortie être, quelle est la plage d'entrée, puis multiplier et ajouter de manière appropriée. –

0

Vous ne devez pas affecter l'instance du compteur de performance à votre barre de progression, mais sa valeur. La valeur elle-même est Int64.

progressbar1.Value = (Int32) ramCounter.RawValue; 

vôtre, Alois Kraus