需要写一个能实时获取当前CPU和内存使用率的程序。
用VS2005做的MFC界面,代码都写在通过点击一个START按钮来实现。
大概程序结构如下:
while(1) { //计算出当前内存使用率
//计算出当前CPU使用率
UpdateData(false); sleep(1000); }
|
程序的本意是每过1秒刷新当前内存和CPU使用率,但是程序却出问题了,运行的时候点击START按钮直接无响应。而去掉while循环,只运行一次就没有问题。或者改成下面的样子时
int i=10; while(i--) { //计算出当前内存使用率
//计算出当前CPU使用率
UpdateData(false); sleep(1000); }
|
需要运行到i=0以后(即程序运行完了),UpdateData(false)才发挥作用,更新一次数据,而在这之前,数据是不会刷新的。
GOOGLE了一下,发现有不少人问过这些问题,解决的办法是使用定时器。
在类中添加WM_TIMER消息,并映射到ontimer()函数。
SetTimer(1,1000,NULL); ...onTimer(nIDEvent) { //计算出当前内存使用率
//计算出当前CPU使用率
UpdateData(false); SetTimer(1,1000,NULL); }
|
编译,通过,程序就正常运行啦。
阅读(14267) | 评论(0) | 转发(0) |