Chinaunix首页 | 论坛 | 博客
  • 博客访问: 172315
  • 博文数量: 18
  • 博客积分: 476
  • 博客等级: 下士
  • 技术积分: 187
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-27 20:42
个人简介

~

文章分类
文章存档

2014年(2)

2011年(10)

2010年(6)

分类: WINDOWS

2011-03-07 21:34:06

需要写一个能实时获取当前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);
    
}


编译,通过,程序就正常运行啦。



阅读(14170) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~