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


CPUコア毎の使用率を取得するサンプルコード

.NETを使ったCPUコア毎使用率を取得するサンプルコードになります。
CPU全体の使用率を取得したい場合は、以下のリンク記事を参照ください。

CPU使用率を取得するサンプルコード

サンプルコードは C#, Visual Basic(VB)を公開しています。

関連サイト

関連記事

動作確認環境

  • Windows 10 ver.1909
  • Visual Studio 2019
  • .NET Framework 4.7.2
  • コンソールアプリケーション

CPUコア毎の使用率取得のサンプルコード

以下に C#, Visual Basic(VB) によるCPU使用率を取得するサンプルコードを記します。
約1秒ごとにCPU使用率を表示します。
CPUコア数は、Environment.ProcessorCount 値をコア数として使っています。

C# によるCPU使用率取得サンプルコード

using System;
using System.Diagnostics;
using System.Threading;

class CpuCoreUsage
{
    private PerformanceCounter[] cpuCounters;

    static void Main(string[] args)
    {
        CpuCoreUsage cpuCoreUsage = new CpuCoreUsage
        {
            cpuCounters = new PerformanceCounter[Environment.ProcessorCount]
        };

        for (int i = 0; i < cpuCoreUsage.cpuCounters.Length; i++)
        {
            cpuCoreUsage.cpuCounters[i] = new PerformanceCounter("Processor", "% Processor Time", i.ToString());
        }

        string header= "";
        for (int i = 0; i < cpuCoreUsage.cpuCounters.Length; i++)
        {
            if (!string.IsNullOrEmpty(header))
            {
                header += " ,";
            }
            header += "CPU" + i.ToString();
        }
        Console.WriteLine(header);

        while (true)
        {
            float[] coreUsageValues = cpuCoreUsage.GetCpuCoreUsage(cpuCoreUsage.cpuCounters);
            string result = "";
            for (int i = 0; i < coreUsageValues.Length;i++)
            {
                if (!string.IsNullOrEmpty(result))
                {
                    result += " ,";
                }
                result += coreUsageValues[i];
            }
            Console.WriteLine(result);
            Thread.Sleep(1000);
        }
    }

    private float[] GetCpuCoreUsage(PerformanceCounter[] pcs)
    {
        float[] usageValues = new float[pcs.Length];
        for(int i = 0; i < pcs.Length; i++)
        {
            usageValues[i] = pcs[i].NextValue();
        }
        return usageValues;
    }
}

Visual Basic(VB) によるCPU使用率取得サンプルコード

Imports System.Threading

Module Module1

    Sub Main()

        Dim cpuCounters As PerformanceCounter()
        cpuCounters = New PerformanceCounter(Environment.ProcessorCount - 1) {}

        For i As Integer = 0 To cpuCounters.Length - 1
            cpuCounters(i) = New PerformanceCounter("Processor", "% Processor Time", i.ToString())
        Next

        Dim header As String = ""
        For i As Integer = 0 To cpuCounters.Length - 1

            If Not String.IsNullOrEmpty(header) Then
                header += " ,"
            End If

            header += "CPU" & i.ToString()
        Next
        Console.WriteLine(header)

        While True
            Dim coreUsageValues As Single() = GetCpuCoreUsage(cpuCounters)
            Dim result As String = ""

            For i As Integer = 0 To coreUsageValues.Length - 1

                If Not String.IsNullOrEmpty(result) Then
                    result += " ,"
                End If

                result += coreUsageValues(i).ToString
            Next

            Console.WriteLine(result)
            Thread.Sleep(1000)
        End While
    End Sub

    Private Function GetCpuCoreUsage(pcs As PerformanceCounter()) As Single()
        Dim usageValues As Single() = New Single(pcs.Length - 1) {}

        For i As Integer = 0 To pcs.Length - 1
            usageValues(i) = pcs(i).NextValue()
        Next

        Return usageValues
    End Function

End Module

実行結果

上記のサンプルコードを実行したときのキャプチャです。

01.png

以上、.NETでCPU使用率を取得するサンプルコードの紹介でした。


添付ファイル: file01.png 192件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-02-01 (土) 17:12:29