CPUコア毎の使用率を取得するサンプルコード †.NETを使ったCPUコア毎使用率を取得するサンプルコードになります。 サンプルコードは C#, Visual Basic(VB)を公開しています。 関連サイト †関連記事 †動作確認環境 †
CPUコア毎の使用率取得のサンプルコード †以下に C#, Visual Basic(VB) によるCPU使用率を取得するサンプルコードを記します。 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 実行結果 †上記のサンプルコードを実行したときのキャプチャです。 以上、.NETでCPU使用率を取得するサンプルコードの紹介でした。 |