MFC定时器几种特殊情况的测试
2014-08-13 16:44
148 查看
结论1、循环设置同一”定时器ID“的定时器,相当于只设置一个定时器,定时器被覆盖;想设置多个,则使用不同”定时器ID“的定时器;
结论2:程序执行时间过长,超过定时器时间设置的间隔,则程序执行过程中定时器不再触发”操作“,即被忽略,知道程序执行完成,才执行下一个时间间隔的定时器操作。
void CTestDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 if(nIDEvent==1) { KillTimer(1);//这里生成第N个txt文件 //调用生成第一个txt函数 int i=0; for (i=0; i<100000; i++); if(i==100000) TRACE("文件1:"); } else if(nIDEvent==2) { KillTimer(2);//这里生成第N个txt文件 //调用生成第2个txt函数 int i=0; for (i=0; i<100000; i++); if(i==100000) TRACE("文件2:"); } else if(nIDEvent==3) { KillTimer(3);//这里生成第N个txt文件 //调用生成第3个txt函数 int i=0; for (i=0; i<1000000; i++); if(i==1000000) TRACE("文件3:"); } else if(nIDEvent==4) { KillTimer(4);//这里生成第N个txt文件 //调用生成第4个txt函数 int i=0; for (i=0; i<1000000; i++); if(i==1000000) TRACE("文件4:"); } else if(nIDEvent==5) { KillTimer(5);//这里生成第N个txt文件 //调用生成第5个txt函数 int i=0; for (i=0; i<10000000; i++); if(i==10000000) TRACE("文件5:"); } CDialogEx::OnTimer(nIDEvent); } void CTestDlg::OnBnClickedButton1()//点击按钮调5“次”定时器操作 { // TODO: 在此添加控件通知处理程序代码 for(int i=0;i<5;i++) { //SetTimer(i+1,100,NULL);//达到目的:输出一个“文件1:、文件2:、文件3:、文件4:、文件5:” SetTimer(1,100,NULL);//只输出一次“文件1:”,没有5次,因为前面4次SetTimer操作被最后1次覆盖了,相当于只有最后一个定时器(定时器ID为1)有效 } }
结论2:程序执行时间过长,超过定时器时间设置的间隔,则程序执行过程中定时器不再触发”操作“,即被忽略,知道程序执行完成,才执行下一个时间间隔的定时器操作。
void CTestDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 ++m_nCount;//计数 if(nIDEvent==1) { timeb time1,time2; ftime(&time1); int i=0; for (i=0; i<100000000; i++); if(i==100000000) TRACE("文件:%d;",m_nCount); ftime(&time2); TRACE("执行时间间隔:%d(ms);",( (time2.time*1000+time2.millitm) - (time1.time*1000+time1.millitm) )); } if(m_nCount >= 5) { KillTimer(1); } CDialogEx::OnTimer(nIDEvent); } void CTestDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 m_nCount=0; //for(int i=0;i<5;i++) { //SetTimer(i+1,1,NULL); SetTimer(1,1,NULL);//时间间隔为1ms,即1ms触发一次,但每执行1次需要200-300ms,故忽略了200-300次的触发;准确输出想要的5次,“文件1:时间间隔277(ms)”等共5个 } }
相关文章推荐
- 在Oracle库上几种特殊情况的SQL语句
- ”上三角“行列式源代码(改良版,添加了几种特殊情况的特殊处理)
- java replaceall方法替换String的几种特殊情况
- 测试JSON的几种情况
- QTP几种特殊情况处理
- 《探索式软件测试》中提到的几种需要测试的情况
- 在测试过程中,可能会出现以下常见的几种测试情况
- iOS内购实现及测试Check List 在内购使用中存在的几种丢单的情况 1.客户端获取到交易
- 在Oracle库上几种特殊情况的SQL语句
- .net使用Newtonsoft.Json.dll解析json过程的几种特殊情况处理
- mysql死锁几种情况的测试
- 详解Angular.js指令中scope类型的几种特殊情况
- JavaScript 函数与变量的几种特殊情况
- phonegap(cordova)在ios系统实现录音功能的几种特殊情况
- python实现tail(考虑到几种特殊情况)
- 用Powermock测试几种特殊情况
- 利用黑盒测试中的等价类划分完成以下题目 3、某程序规定:"输入三个非0正整数 a 、 b 、 c 分别作为三边的边长构成三角形(暂不考虑特殊三角形的情况)。请根据给出的说明,用等价类划分法进行划分,并给每个等价类规定唯一的编号。
- Mybatis中使用sql几种特殊情况
- 关于ruby几种String连接性能的小测试
- VTP不能在交换机间同步的几种情况分析