.NET基础示例系列之十六:制做进程监视器
2007-03-20 21:33
471 查看
1)可以查看进程的各项基本信息,如cpu,内存,父进程,执行路径,创建者等
2)可以中止进程,创建新进程
3)可以配置目标进程,配置刷新速度
最终效果图:
private void FillDetailUseWmi(int pID)
public class HandleObjectReady
2)使用性能计数器计算cpu利用率
2.1)计算过程
//通过计数器获取idle空闲进程cpu占用率r1;
//通过process类的TotalProcessorTime属性获取各进程的cpu时间,求和,得各进程(除空闲进程idle,该进程无法通过process类获得cpu时间)cpu时间和t1;
//通过t1/(100-r1)得到总cpu时间t;
//对各进程,通过TotalProcessorTime获得进程cpu时间tnew,计算:
(Tnew-told)/t,即得该进程的cpu占用率,其中told是程序中记录的该进程上一次的TotalProcessorTime。
2.2)关于性能计数器
系统会为每个进程分配一个计数器,通过
new PerformanceCounter("Process", "% Processor Time", "进程名称")实例化该计数器,使用计数器对象的NextValue方法可以得到进程占用cpu的百分比(第一次调用NextValue获取的值都为0,之后就没问题了,这个要注意)。
2.3)Idle进程的含义
Idle意为懒散的、无所事事。事实上,idle不能算着一个进程,它用于表示cpu空闲资源,它所占的比率越高,表示你的机器越空闲。
2.4)多核CPU或使用超线程技术的CPU
对于多核或使用超线程技术的cpu,根据计数器求得的idle进程cpu占用比率将超过100%,此时应将idle的cpu利用率/总的cpu利用率,所得作为真正的idle的cpu利用率。
添加命名空间:
using System.Diagnostics;
private static PerformanceCounter mIdle = new PerformanceCounter("Process", "% Processor Time", "Idle");
private static PerformanceCounter mTotal = new PerformanceCounter("Process", "% Processor Time", "_Total");
private void FillNeedRefreshInfo(params Process[] pCurrentAll)
private double CalCurrentTotalCpuTime()
代码下载
2)可以中止进程,创建新进程
3)可以配置目标进程,配置刷新速度
最终效果图:
private void FillDetailUseWmi(int pID)
public class HandleObjectReady
2)使用性能计数器计算cpu利用率
2.1)计算过程
//通过计数器获取idle空闲进程cpu占用率r1;
//通过process类的TotalProcessorTime属性获取各进程的cpu时间,求和,得各进程(除空闲进程idle,该进程无法通过process类获得cpu时间)cpu时间和t1;
//通过t1/(100-r1)得到总cpu时间t;
//对各进程,通过TotalProcessorTime获得进程cpu时间tnew,计算:
(Tnew-told)/t,即得该进程的cpu占用率,其中told是程序中记录的该进程上一次的TotalProcessorTime。
2.2)关于性能计数器
系统会为每个进程分配一个计数器,通过
new PerformanceCounter("Process", "% Processor Time", "进程名称")实例化该计数器,使用计数器对象的NextValue方法可以得到进程占用cpu的百分比(第一次调用NextValue获取的值都为0,之后就没问题了,这个要注意)。
2.3)Idle进程的含义
Idle意为懒散的、无所事事。事实上,idle不能算着一个进程,它用于表示cpu空闲资源,它所占的比率越高,表示你的机器越空闲。
2.4)多核CPU或使用超线程技术的CPU
对于多核或使用超线程技术的cpu,根据计数器求得的idle进程cpu占用比率将超过100%,此时应将idle的cpu利用率/总的cpu利用率,所得作为真正的idle的cpu利用率。
添加命名空间:
using System.Diagnostics;
private static PerformanceCounter mIdle = new PerformanceCounter("Process", "% Processor Time", "Idle");
private static PerformanceCounter mTotal = new PerformanceCounter("Process", "% Processor Time", "_Total");
private void FillNeedRefreshInfo(params Process[] pCurrentAll)
private double CalCurrentTotalCpuTime()
代码下载
相关文章推荐
- .NET基础示例系列之八:WMI获取进程信息
- .NET基础示例系列之一:操作进程
- .NET基础示例系列之十三:WMI获取硬件信息
- .NET基础示例系列之十四:C#导出建表语句及数据
- .NET基础示例系列之十一:线程的参数、返回值及中止
- .NET基础示例系列之十七:VML绘制中国地图
- .NET基础示例系列之十八:使用C++调用MySql C Api
- .NET基础示例系列之二十二:Xml操作简明手册
- .NET基础示例系列之十二:DLLImport
- .NET基础示例系列之十九:Dundas For ASP.NET
- .NET基础示例系列之三:同步异步
- .NET基础示例系列之二十一:Web Service
- .NET基础示例系列之十五:操作Excel
- .NET基础示例系列之二十四:家谱软件(1)
- .NET基础示例系列之二十:对图片的几种简单处理
- .NET基础示例系列之二十三:WebRequest、WebResponse及刷票程序
- .NET基础示例系列之四:反射
- .NET基础示例系列之十:不规则窗体
- .NET基础示例系列之九:ListView排序
- .NET基础示例系列之五:泛型