您好,登錄后才能下訂單哦!
這篇文章主要介紹“如何在NET Core中獲取CPU使用率”,在日常操作中,相信很多人在如何在NET Core中獲取CPU使用率問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何在NET Core中獲取CPU使用率”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
在 .NET Framework
中,很多人會用 PerformanceCounter
類做這件事情,
如下代碼:
public class Program { public static void Main(string[] args) { while (true) { var cpuUsage = GetCpuUsageForProcess(); Console.WriteLine(cpuUsage); } } private static int GetCpuUsageForProcess() { var currentProcessName = Process.GetCurrentProcess().ProcessName; var cpuCounter = new PerformanceCounter("Process", "% Processor Time", currentProcessName); cpuCounter.NextValue(); return (int)cpuCounter.NextValue(); } }
但 PerformanceCounter
在.NETCore
中是沒有的,所以只能采用其他方式了,其實在 System.Diagnostics.Process
類中有一個 TotalProcessorTime
屬性,它可以準實時的統計當前進程所消耗的CPU處理器時間,
如下代碼:
class Program { public static async Task Main(string[] args) { var task = Task.Run(() => ConsumeCPU(50)); while (true) { await Task.Delay(2000); var cpuUsage = await GetCpuUsageForProcess(); Console.WriteLine(cpuUsage); } } public static void ConsumeCPU(int percentage) { Stopwatch watch = new Stopwatch(); watch.Start(); while (true) { if (watch.ElapsedMilliseconds > percentage) { Thread.Sleep(100 - percentage); watch.Reset(); watch.Start(); } } } private static async Task<double> GetCpuUsageForProcess() { var startTime = DateTime.UtcNow; var startCpuUsage = Process.GetCurrentProcess().TotalProcessorTime; await Task.Delay(500); var endTime = DateTime.UtcNow; var endCpuUsage = Process.GetCurrentProcess().TotalProcessorTime; var cpuUsedMs = (endCpuUsage - startCpuUsage).TotalMilliseconds; var totalMsPassed = (endTime - startTime).TotalMilliseconds; var cpuUsageTotal = cpuUsedMs / (Environment.ProcessorCount * totalMsPassed); return cpuUsageTotal * 100; } }
可以看到程序每2s輸出一次,觀察到 output
和 任務管理器 中的CPU
利用率基本是一致的。
到此,關于“如何在NET Core中獲取CPU使用率”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。