我在程序里有多个按钮,每个按钮都需要用一个定时器
CMyDlg::OnBut1()
{SetTimer(1,600,NULL)
}
CMyDlg::OnBut2()
{SetTimer(2,600,NULL)
}
响应时
CMyDlg::OnTimer(UINT nIDEvent)
{
switch(nIDEvent){
case 1:
test1;
break;
case 2:
test2;
break;
}
CMyDlg::test1()
{
//做该做的事情
}
CMyDlg::test2()
{
//做该做的事情
}如果按下按钮1,响应test1,此时test1就一直在工作,这时还按下了按钮2响应test2,这时test2也会一直在工作吗?还是会有冲突,需要开多个线程?如果要开多个线程是在什么地方开比较好?在SetTimer前开,还是在OnTime的case里面开?
CMyDlg::OnBut1()
{SetTimer(1,600,NULL)
}
CMyDlg::OnBut2()
{SetTimer(2,600,NULL)
}
响应时
CMyDlg::OnTimer(UINT nIDEvent)
{
switch(nIDEvent){
case 1:
test1;
break;
case 2:
test2;
break;
}
CMyDlg::test1()
{
//做该做的事情
}
CMyDlg::test2()
{
//做该做的事情
}如果按下按钮1,响应test1,此时test1就一直在工作,这时还按下了按钮2响应test2,这时test2也会一直在工作吗?还是会有冲突,需要开多个线程?如果要开多个线程是在什么地方开比较好?在SetTimer前开,还是在OnTime的case里面开?
=========
定时器不过是定时发送消息,你开多个定时器,每个定时器都是到时间发消息,不过对定时器的响应一个是按顺序的,比如第一个定时器的test1() 未处理完,它是不会处理第二个定时器中的test2()的。另一个是,如果WM_TIMER来得太多,来不及处理,这些消息会被合并,所以很不准确,且运行时间越长越不准确。