首页 > 系统相关 >根据进程 ID 获取进程 CPU 占用和内存占用等信息(C#)

根据进程 ID 获取进程 CPU 占用和内存占用等信息(C#)

时间:2022-12-21 14:34:27浏览次数:56  
标签:PerformanceCounter C# 占用 var Process 进程 new null instanceName

根据进程 ID 获取进程 CPU 占用和内存占用等信息(C#)

代码参考

  PerformanceCounter? cpuCounter = null;
  PerformanceCounter? ramCounter = null;
  PerformanceCounter? ramCounter2 = null;
  // PerformanceCounter? ramCounter3 = null;

  var performanceCounterCategory = new PerformanceCounterCategory("Process");
  var instanceNames = performanceCounterCategory.GetInstanceNames();
  foreach (var instanceName in instanceNames)
  {
      try
      {
          var counter = new PerformanceCounter("Process", "ID Process", instanceName, true);
          if (counter.RawValue == Pid)
          {
              cpuCounter = new PerformanceCounter("Process", "% Processor Time", instanceName);
              ramCounter = new PerformanceCounter("Process", "Working Set", instanceName);
              ramCounter2 = new PerformanceCounter("Process", "Private Bytes", instanceName);
              // ramCounter3 = new PerformanceCounter(".NET CLR Memory", "# Gen 2 Collections", instanceName);
              break;
          }
      }
      catch (Exception e)
      {
          continue;
      }
  }

  if (cpuCounter == null || ramCounter == null || ramCounter2 == null)
  {
      return null;
  }

  var cpu = cpuCounter.NextValue();
  var ram = ramCounter.NextValue() / (1024.0 * 1024);
  var ram2 = ramCounter2.NextValue() / (1024.0 * 1024);
  // var ram3 = ramCounter3.NextValue() / (1024.0 * 1024);

参考资料

c# - Performance Counter by Process ID instead of name? - Stack Overflow
.net - Get CPU Usage for Process by Process ID - Stack Overflow

标签:PerformanceCounter,C#,占用,var,Process,进程,new,null,instanceName
From: https://www.cnblogs.com/jasongrass/p/16996201.html

相关文章

  • Electron Mac 打包报 Error: Exit code: ENOENT. spawn /usr/bin/python ENOENT 解决
     Electron项目使用vue-cli-electron-builder创建,原来我的Mac上编译都很正常自从Mac升级到macOSventuraversion13.0.1后打包报错,electron-builder编译dmg......
  • 进程与线程的区别,如何创建线程类
    ......
  • WinCC组态
    WinCC项目的一般组态1、新建项目,打开WinCC项目管理器,文件→新建 在这里,新建项目有3种类型,分别是单用户项目,多用户项目,客户机项目。单用户项目......
  • UVA 673 Paretheses Balance
    原题Vjudge题目大意怼给你一堆括号,判断是否合法有三条规则(1)空串合法(2)如果\(A和B\)都合法,则\(AB\)合法(例如:\(()和[]\)都合法,则\(()[]\)合法)(3)如果\(A\)合法,则\((A)和[A......
  • QCustomPlot基础教程(十三)——Qt中QCustomPlot清除已绘制的曲线方法总结(全面汇总)
    https://blog.csdn.net/didi_ya/article/details/121237553目录1、前言2、方法一——clearGraphs()3、方法二——clearPlottables()4、方法三——clear()5、方法四......
  • net中c#如何录制视频?推荐使用Kogel.Record组件
    这是一个使用C#语言制作的录制框架(基于AForge),支持录制桌面,多屏,声音,摄像头,某个应用程序的界面。使用此框架需要安装扩展包Kogel.Record,可以Nuget上搜索或者使用Nuget命令......
  • net中c#如何录制音频?推荐使用NAudio组件
    上一篇博客实现录制视频,今天这篇讲的是net中c#实现录制音频?这里推荐使用NAudio这个组件。它是相对成熟、开源的C#音频开发工具,包含录音、播放录音、格式转换、混音调整等功......
  • Unity AssetBundle 所涉及的CRC
    CRC的作用校验文件是否被篡改过!加载ab包时使用crc进行校验比如publicstaticAssetBundleLoadFromFile(stringpath,uintcrc,ulongoffset),注意:这里传入的crc,必......
  • C#对DataTable中的某列进行分组
    IEnumerable<IGrouping<string,DataRow>>result=dt.Rows.Cast<DataRow>().GroupBy<DataRow,string>(dr=>dr["FORMSERIALNUMBER"].ToString());//C#对DataTable中......
  • mac安装svn
    mac安装svn新入职一家传统型公司,由于需要维护之前的项目,并且之前的项目采用的是svn来进行代码管理,所以记录一下mac安装svn的操作流程#安装svn服务brewinstallsvn#拉......