2010-03-21 2 views
1

J'essaie de surveiller les informations de performance pour openoffice en utilisant la classe de compteur de performance en C#. Je rencontre un problème bizarre où bien que mon programme puisse très bien surveiller les informations d'autres applications, il ne peut pas surveiller correctement les données de performance d'open office en utilisant la même procédure. Essentiellement, je crée un processus et ai un compteur de performance obtenir le temps de processeur de ce processus en utilisant son nom de fichier. OpenOffice, j'ai remarqué, a deux processus sous le gestionnaire de tâches; l'un est soffice.bin et un est soffice.exe. Le fichier bin occupe beaucoup plus de mémoire que le fichier exe, j'ai donc essayé de le surveiller après que le fichier exe ne m'ait pas donné de données de performance utilisables (Performance conter revenait avec une valeur de 0). Cependant, le fichier bin a le même problème - je ne peux obtenir aucune donnée de performance utilisable, peu importe ce que je fais pour l'application.Comment puis-je prendre les informations de performance d'OpenOffice en C#?

Quelqu'un peut-il me dire pourquoi je n'obtiens pas de bonnes lectures pour la performance de openoffice? Est-ce que j'utilise le mauvais nom de processus, ou est-ce quelque chose de plus subtil?

// create a process 
     p = new Process(); 
     p.StartInfo.UseShellExecute = true; 
     p.StartInfo.CreateNoWindow = true; 
     p.StartInfo.FileName = fileName; 
     p.Start(); 

     // for open office, I found that the BIN file takes up more memory in the task manager 
     String name = "C:\\Program Files (x86)\\OpenOffice.org 3\\program\\soffice.bin"; 

     // So I make a performance counter to monitor that. 
     pc = new System.Diagnostics.PerformanceCounter("Process", 
        "% Processor Time", 
        name, 
        true); 

Répondre

3

Le « nom d'instance » utilisé par l'objet Process est juste le nom du fichier exécutable, moins toute extension .exe. Ce n'est pas le chemin complet du fichier.

Ainsi, au lieu de C:\Program Files (x86)\OpenOffice.org 3\program\soffice.bin, vous devez spécifier soffice (pour soffice.exe) ou soffice.bin.

Regardez Perfmon pour voir les noms des instances sur votre système.

+0

Hey! Ça a marché! Merci beaucoup! – Waffles

Questions connexes