2010-03-21 9 views
1

Я пытаюсь контролировать информацию о производительности для openoffice, используя класс счетчика производительности в C#. Я столкнулся с какой-то странной проблемой: хотя моя программа может контролировать информацию о других приложениях просто отлично, она не может правильно отслеживать данные о производительности офиса, используя ту же процедуру. По сути, я создаю процесс и имею счетчик производительности, чтобы получить время процессора от этого процесса, используя его имя файла. OpenOffice, я заметил, имеет два процесса под управлением задачи; один из них - soffice.bin, а один - файл soffice.exe. Файл bin занимает больше памяти, чем exe-файл, поэтому я попытался контролировать это после того, как exe-файл не дал мне никаких полезных данных о производительности (Performance conter продолжал возвращать значение 0). Однако файл bin имеет такую ​​же проблему - я не могу получить какие-либо пригодные для использования данные производительности, независимо от того, что я делаю с приложением.Как я могу получить информацию об эффективности из OpenOffice в C#?

Может ли кто-нибудь сказать мне, почему у меня нет хороших показаний для работы openoffice? Я использую неправильное имя процесса, или это что-то более тонкое?

// 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); 

ответ

3

«Имя экземпляра» используется Process объекта только имя исполняемого файла, за вычетом любых .exe расширения. Это не весь путь к файлу.

Таким образом, вместо C:\Program Files (x86)\OpenOffice.org 3\program\soffice.bin, вы должны указать soffice (для soffice.exe) или soffice.bin.

Посмотрите на Perfmon, чтобы увидеть фактические имена экземпляров в вашей системе.

+0

Эй! Это сработало! Спасибо! – Waffles