获得当前进程/线程 CPU 使用率

有时候,我们需要排除其它进程的影响,单看自己的进程的CPU占用率,而不是整个系统的CPU占用率,那么我们该如何看呢?Windows 提供了一个 API GetProcessTimes 来获得进程的使用时间信息,我们简单封装了下提供给大家:

具体用法就很简单了,设置一个每秒触发一次的Timer,然后取全局变量ProcessCpuUsage.Current 的值就是进程自身的 CPU  使用率了,简单示例代码如下:

这个代码是从 QWorker  的演示程序中抠出来重写的,移除了与 QDAC 相关的代码,理论上能够用于任意版本的 Delphi 里。

如果要获取线程的 CPU 使用情况,只需要将其中的 GetProcessTimes 替换为 GetThreadTimes 即可,剩下的代码保持不变。

下面是线程版本(和上面实际就差了一个函数,并在Create函数中默认调用了一次Current函数以初始化末次的CPU使用时间,以便下一次统计)

 

分享到:

1 条评论

沙发空缺中,还不快抢~