一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 如何在 .NET Core 中獲取 CPU 使用率

如何在 .NET Core 中獲取 CPU 使用率

2022-01-07 22:13一線碼農聊技術jackwild ASP.NET教程

這篇文章我們分享一種如何在 .NETCore 中獲取 CPU使用率的方法, 它所報告的這個值和 任務管理器 中報告的 CPU 使用值 差不多是一致的。

如何在 .NET Core 中獲取 CPU 使用率

這篇文章我們分享一種如何在 .NETCore 中獲取 CPU使用率的方法, 它所報告的這個值和 任務管理器 中報告的 CPU 使用值 差不多是一致的。

在 .NET Framework 中,很多人會用 PerformanceCounter 類做這件事情,參考如下代碼:

  1. public class Program 
  2.   { 
  3.       public static void Main(string[] args) 
  4.       { 
  5.           while (true
  6.           { 
  7.               var cpuUsage = GetCpuUsageForProcess(); 
  8.  
  9.               Console.WriteLine(cpuUsage); 
  10.           } 
  11.       } 
  12.  
  13.       private static int GetCpuUsageForProcess() 
  14.       { 
  15.           var currentProcessName = Process.GetCurrentProcess().ProcessName; 
  16.           var cpuCounter = new PerformanceCounter("Process""% Processor Time", currentProcessName); 
  17.           cpuCounter.NextValue(); 
  18.           return (int)cpuCounter.NextValue(); 
  19.       } 
  20.   } 

但 PerformanceCounter 在 .NETCore 中是沒有的,所以只能采用其他方式了,其實在 System.Diagnostics.Process 類中有一個 TotalProcessorTime 屬性,它可以準實時的統(tǒng)計當前進程所消耗的CPU處理器時間,參考如下代碼:

  1. class Program 
  2.     public static async Task Main(string[] args) 
  3.     { 
  4.         var task = Task.Run(() => ConsumeCPU(50)); 
  5.  
  6.         while (true
  7.         { 
  8.             await Task.Delay(2000); 
  9.             var cpuUsage = await GetCpuUsageForProcess(); 
  10.  
  11.             Console.WriteLine(cpuUsage); 
  12.         } 
  13.     } 
  14.  
  15.     public static void ConsumeCPU(int percentage) 
  16.     { 
  17.         Stopwatch watch = new Stopwatch(); 
  18.         watch.Start(); 
  19.         while (true
  20.         { 
  21.             if (watch.ElapsedMilliseconds > percentage) 
  22.             { 
  23.                 Thread.Sleep(100 - percentage); 
  24.                 watch.Reset(); 
  25.                 watch.Start(); 
  26.             } 
  27.         } 
  28.     } 
  29.  
  30.     private static async Task<double> GetCpuUsageForProcess() 
  31.     { 
  32.         var startTime = DateTime.UtcNow; 
  33.         var startCpuUsage = Process.GetCurrentProcess().TotalProcessorTime; 
  34.  
  35.         await Task.Delay(500); 
  36.  
  37.         var endTime = DateTime.UtcNow; 
  38.         var endCpuUsage = Process.GetCurrentProcess().TotalProcessorTime; 
  39.  
  40.         var cpuUsedMs = (endCpuUsage - startCpuUsage).TotalMilliseconds; 
  41.         var totalMsPassed = (endTime - startTime).TotalMilliseconds; 
  42.  
  43.         var cpuUsageTotal = cpuUsedMs / (Environment.ProcessorCount * totalMsPassed); 
  44.  
  45.         return cpuUsageTotal * 100; 
  46.     } 

如何在 .NET Core 中獲取 CPU 使用率

可以看到程序每2s輸出一次,觀察到 output 和 任務管理器 中的CPU利用率基本是一致的。

譯文鏈接:https://medium.com/@jackwild/getting-cpu-usage-in-net-core-7ef825831b8b

原文鏈接:https://mp.weixin.qq.com/s/MdL5HBcHgbo_3DMshc5Gfg

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 微拍秒拍99福利精品小视频 | 韩国三级在线 | 午夜亚洲| 91国产高清| 久草青青在线 | 国产精品 视频一区 二区三区 | 极品妖艳许清赵丽全文免费阅读 | wwwav视频| 久久精品国产久精国产果冻传媒 | 黑人日白人 | 999国产高清在线精品 | 好湿好紧好大野战 | 97午夜视频 | 精品国产免费一区二区三区 | 2021最新国产成人精品免费 | yy6080午夜国产免费福利 | zoz.zzz色| 国产资源免费 | 99久久精品自在自看国产 | 亚洲AV久久无码精品九号 | 国产精品视频2021 | 美国女艳星brandilove | 色综合久久天天综合 | 91传媒制片厂果冻有限公司 | 久久se视频精品视频在线 | 236宅宅2021最新理论 | 风间由美一区二区av101 | 2048论坛永久入口 原创合集 | 亚洲va韩国va欧美va天堂 | 91看片在线观看 | 美女脱了内裤打开腿让你桶爽 | 女人与d0gxxx | 色四虎| 啪啪无尽3d动漫漫画免费网站 | 扒开腿开嫩苞 | 给我免费观看的视频在线播放 | 狠狠久久久久综合网 | 91天堂素人97年清纯嫩模 | 四虎影剧院 | 婷婷影院在线观看 | 污污在线免费观看 |