1

C#のパフォーマンスカウンタークラスを使用して、openofficeのパフォーマンス情報を監視しようとしています。私のプログラムは他のアプリケーション情報を問題なく監視できますが、同じ手順を使用してOpenOfficeのパフォーマンスデータを適切に監視できないという奇妙な問題が発生しています。基本的に、私はプロセスを作成し、パフォーマンスカウンターに、そのファイル名を使用してそのプロセスからプロセッサー時間を取得させます。私が気付いたOpenOfficeには、タスクマネージャーの下に2つのプロセスがあります。1つはsoffice.binで、もう1つはsoffice.exeです。binファイルはexeファイルよりもはるかに多くのメモリを消費するため、exeファイルが使用可能なパフォーマンスデータを提供しなかった後、それを監視しようとしました(パフォーマンスコントローラーは値0を返し続けました)。ただし、binファイルにも同じ問題があります。使用可能なパフォーマンスデータを取得できません。

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

1 に答える 1

3

オブジェクトが使用する「インスタンス名」Processは、実行可能ファイルの名前から拡張子を除いたもの.exeです。ファイルパス全体ではありません。

したがって、の代わりに、 (for )またはC:\Program Files (x86)\OpenOffice.org 3\program\soffice.binを指定する必要があります。sofficesoffice.exesoffice.bin

Perfmonを調べて、システム上の実際のインスタンス名を確認してください。

于 2010-03-22T22:05:32.850 に答える