首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC多媒体定时器?该怎么解决

2012-07-28 
MFC多媒体定时器?我的程序是这样设计的,用了一个多媒体定时器,每20ms去采集一次数据;用了两个Timer定时器,

MFC多媒体定时器?
我的程序是这样设计的,
用了一个多媒体定时器,每20ms去采集一次数据;
用了两个Timer定时器,一个每1s去显示数据,1个每2s去画图;

现在的情况是:程序目前运行的状况是,过3分钟后,程序就死了,如果将多媒体定时器,改成Timer,数据就会丢很多;

我现在不让系统去画图,也不让它显示数据,即把SetTimer屏蔽掉;只让它采集数据,过一会儿,还是断了

但是用Timer虽然丢数据,但是程序不死机。

我添加的多媒体定时器代码如下:
.h
class CDlg : public CDialog
{
。。。。。
static void CALLBACK TimerCallBack(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2);
MMRESULT TimerID;
void OnMMTimer();
}

.cpp

TimerID=timeSetEvent(48,1,&TimerCallBack,(DWORD)this,1);

void CALLBACK CDlg::TimerCallBack(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
{
 CDlg * pThis=(CDlg*)dwUser;//由this指针获得实例的指针
 pThis->OnMMTimer();
return;
}

谁知道是哪出的问题啊?请求高手指点啊!!!
我觉得应该不是程序做的事情太多了,运行不过来,就做这么点工作,应该timeSetEvent,我没有用过,所以导致有些地方考虑不周到,希望高手指点啊!!!  



[解决办法]
timer的精度不够,一般最小是50ms

程序目前运行的状况是,过3分钟后,程序就死了
看看是否是资源泄露
[解决办法]
你用多媒体定时器的话
要单独开一个定时的进程
不然你这个程序就一个进程
就不能响应鼠标操作了
这东西我做过,精度20ms没问题

热点排行