博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# 获取某个进程的CPU使用百分百(类似任务管理器中显示CPU)
阅读量:6898 次
发布时间:2019-06-27

本文共 2088 字,大约阅读时间需要 6 分钟。

using System;

using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Management;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace 进程监控

{
class Program
{
static void Main(string[] args)
{
Process[] processes = Process.GetProcessesByName("taskmgr");
foreach (Process instance in processes)
{
Console.WriteLine("");
Console.WriteLine("ProcessName:" + instance.ProcessName);
try
{
//Console.WriteLine("提交大小\t" + instance.PagedMemorySize64 / 1024);
Console.WriteLine("工作设置(内存)\t" + instance.WorkingSet64 / 1024);
Console.WriteLine("线程数\t" + instance.Threads.Count);
Console.WriteLine("句柄数\t" + instance.HandleCount);

}

catch { }
}

Process p = processes[1];

//PerformanceCounter ramCounter = new PerformanceCounter("Process", "Working Set", p.ProcessName);
//PerformanceCounter cpuCounter = new PerformanceCounter("Process", "% Processor Time", p.ProcessName);

var objQuery = new ObjectQuery("select * from Win32_Process WHERE ProcessID = " + p.Id);
var moSearcher = new ManagementObjectSearcher(objQuery);
DateTime firstSample = DateTime.MinValue, secondSample = DateTime.MinValue;

double ProcessorUsage;

double msPassed;
ulong u_OldCPU = 0;
while (true)
{
var gets = moSearcher.Get();
foreach (ManagementObject mObj in gets)
{
try
{
if (firstSample == DateTime.MinValue)
{
firstSample = DateTime.Now;
mObj.Get();
u_OldCPU = (ulong)mObj["UserModeTime"] + (ulong)mObj["KernelModeTime"];
}
else
{
secondSample = DateTime.Now;
mObj.Get();
ulong u_newCPU = (ulong)mObj["UserModeTime"] + (ulong)mObj["KernelModeTime"];

msPassed = (secondSample - firstSample).TotalMilliseconds;

ProcessorUsage = (u_newCPU - u_OldCPU) / (msPassed * 100.0 * Environment.ProcessorCount);

u_OldCPU = u_newCPU;

firstSample = secondSample;
Console.WriteLine("ProcessorUsage:" + (int)ProcessorUsage);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message + ex.StackTrace);
Console.WriteLine(ex.InnerException.Message);
}
}
Thread.Sleep(1000);
}
Console.ReadLine();
}
}
}

本文转自94cool博客园博客,原文链接:http://www.cnblogs.com/94cool/p/6336593.html,如需转载请自行联系原作者 

你可能感兴趣的文章
SSM-Spring-09:Spring中jdk动态代理
查看>>
我为NET狂官方面试题-数据库篇
查看>>
HBase集群安装
查看>>
Ubuntu终端字体大小设置快捷键
查看>>
[20180625]函数与标量子查询13(补充)
查看>>
Python面试问题整理(附答案)
查看>>
设计模式—装饰模式的C++实现
查看>>
MySQL:Innodb page clean 线程 (二) 解析
查看>>
Android CircularFloatingActionMenu:作为系统级按钮悬浮桌面弹出菜单使用(3)
查看>>
正确配置Kubelet可一定程度防止K8S集群雪崩
查看>>
Content Aware ABR技术
查看>>
Spring系列之Spring框架和SpringAOP集成过程分析(十一)
查看>>
云数据库产品月刊·5月刊
查看>>
50行代码的MVVM,感受闭包的艺术
查看>>
Android第三方开源图片裁剪截取:cropper
查看>>
直播转点播实践
查看>>
基于Java语言构建区块链(二)—— 工作量证明
查看>>
Python黑科技:50行代码运用Python+OpenCV实现人脸追踪
查看>>
获取高德地图的四级地址
查看>>
图像识别落地B端应用,商业化的“绣球”先抛给了哪些行业?
查看>>