如果在一个定时器中开启另一个定时器,会发生什么?
问题简介
有个MFC测试项目需要在测试Fail的情况下,自动跑一遍校准,再进行二次测试。原项目的测试和校准都是分别开了个定时器完成的,所以这个需求实现的关键就是要在两个定时器事件中来回切换。在正式实现前,我先打个样验证下在一个定时器中开启另一个定时器,会发生什么?
验证一下
如果两个定时器共用一个时间信号?
写两个定时器Timer4Function、Timer5Function,分别模拟我的测试和校准流程,
- Timer4Function循环输出1.1, 1.2, 1.3, 1.4, 1.5后结束,每个输出间隔1s
- 输出1.4后开启定时器Timer5Function
- Timer5Function循环输出2.1, 2.2, 2.3, 2.4, 2.5后结束,每个输出间隔1s
我先开启Timer4Function定时器,并让两个定时器共用一个时间信号i_RunTimer,看看会发生什么?
int i_RunTimer;
void CTestGdipButtonDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
switch (nIDEvent)
{
case 4:
Timer4Function();
break;
case 5:
Timer5Function();
break;
}
CDialog::OnTimer(nIDEvent);
}
void CTestGdipButtonDlg::Timer4Function(void) //定时器4
{
i_RunTimer++;
char out[100];
switch (i_RunTimer)
{
case 1:
sprintf(out, _T("1.1"));
m_ListInf.AddString(_T(out));
break;
case 2:
sprintf(out, _T("1.2"));
m_ListInf