SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Infragistics NetAdvantageチュートリアル(AD)

Visual Studio 2010でCPU使用率を可視化するガジェットを作成しよう

xamRadialGaugeによるデータ可視化

  • このエントリーをはてなブックマークに追加

CPUの使用率を測定する

 今回、CPUの使用率を測定する方法として、パフォーマンスカウンタを使用します。MSDNのCodeRecipe逆引きサンプルコードに実装例が記載されていますので、[C#]CPUの使用率を特定の間隔で測定する方法[VB]CPUの使用率を特定の間隔で測定する方法を参照し、ロード時にパフォーマンスカウンタの値を定期的に取得するコードを作成します。

 まず、Windowがロードされた時点でイベントを発生させます。

<Window x:Class="NA_CpuGauge.MainWindow"
        …
        Loaded="CpuGaugeWindow_Loaded">
    <Grid>
        …
    </Grid>
</Window>

 イベントハンドラー内でPerformanceCounter、DispatcherTimerを初期化し、CPUの現在の使用率を取得するように設定します。

private PerformanceCounter pc;
private DispatcherTimer timer;

private void CpuGaugeWindow_Loaded(object sender, RoutedEventArgs e)
{
        // パフォーマンス カウンタを初期化します。
        pc = new PerformanceCounter("Processor", "% Processor Time", "_Total", true);
        // タイマーの初期化を行います。
        timer = new DispatcherTimer();
        // 1 秒単位で繰り返し処理を行います。
        timer.Interval = TimeSpan.FromMilliseconds(1000);
        // 処理の内容はこのデリゲートに記述します。
        timer.Tick += new EventHandler(timer_Tick);
        // タイマーを開始します。
        timer.Start();
}

void timer_Tick(object sender, EventArgs e)
{
    // 現在の値を取得し、ゲージの値を設定します。
    Needle1.Value = pc.NextValue();
}

 このPerformanceCounterはアンマネージリソースであるため、使用後に明示的に解放する必要があります。今回は暫定的にClosingイベント内でDisposeメソッドを呼び出すことにします。

<Window x:Class="NA_CpuGauge.MainWindow"
        …
        Closing="CpuGaugeWindow_Closing">
    <Grid>
        …
    </Grid>
</Window>
private void CpuGaugeWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    // パフォーマンス カウンタを解放します。
    pc.Dispose();
}

 実行すると現在のCPU使用率が表示されます。

図18 - 実行すると現在のCPU使用率が表示される
図18 - 実行すると現在のCPU使用率が表示される

滑らかにアニメーション

 このゲージは1秒おきに値の変更が即座に反映されるため、動きがスムーズではありません。値の変更を滑らかにする場合、Needle.Responseプロパティを設定します。

<ig:XamRadialGauge Name="xamRadialGauge1">
            <ig:RadialGaugeScale.Needles>
                <ig:RadialGaugeNeedle x:Name="Needle1">
                    <ig:RadialGaugeNeedle.Response>
                        <ig:GaugeMarkerResponse RefreshRate="00:00:00.0100000" Enabled="True" ResponseTime="00:00:03" />
                    </ig:RadialGaugeNeedle.Response>
                </ig:RadialGaugeNeedle>
            </ig:RadialGaugeScale.Needles>
        </ig:RadialGaugeScale>
    </ig:XamRadialGauge.Scales>
</ig:XamRadialGauge>

まとめ

 今回はVisual Studio 2010を用いてCPU利用率を計測するガジェットの作成を行いました。データ視覚化の活用は今後他社のソリューションとの差別化において非常に有用ではないでしょうか。ぜひNetAdvantage WPF Data Visualizationを使用しリッチなデータ表現を実現してください。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Infragistics NetAdvantageチュートリアル連載記事一覧

もっと読む

この記事の著者

インフラジスティックス・ジャパン株式会社 池原 大然(イケハラ ダイゼン)

国内ベンチャー企業にて.NETエンジニアとして開発に従事、2007年インフラジスティックス・ジャパンに入社。現在デベロッパー エバンジェリストとして、.NETやWPF/Silverlight製品や技術の啓蒙活動を行う。Microsoft MVP for Client App Dev 2010/04 ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5297 2010/06/30 13:48

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング