两个定时器,一个定时器在处理时,另一个定时器到时了,想终止第一个定时器,怎样处理?

解决方案 »

  1.   

    在第二个里面把第一个timer KillTimer了就可以了
      

  2.   

    BOOL CDlg2Dlg::OnInitDialog()
    {
    SetTimer(1,100,NULL);
    SetTimer(2,500,NULL);
    CDialog::OnInitDialog();
    .....
    }
    void CDlg2Dlg::OnTimer(UINT nIDEvent) //WM_TIMER消息
    {
    switch(nIDEvent)
    {
    case 1 : AfxMessageBox("1");
    case 2 : KillTimer(1);
    }
    CDialog::OnTimer(nIDEvent);
    }
      

  3.   

    void CDlg2Dlg::OnTimer(UINT nIDEvent) //WM_TIMER消息
    {
    switch(nIDEvent)
    {
    case 1 : AfxMessageBox("1");
                      break;//这个要加的
    case 2 : KillTimer(1);
    }
    CDialog::OnTimer(nIDEvent);
    }
      

  4.   

    即使你killtime了,第一个OnTimer还是要执行完的,只是以后就没了
      

  5.   

    使用信号量或者互斥量。第一个定时器处理函数的第一句,用一个CSingleLock变量,锁定。然后在第二个定时器的处理函数里边的第一句话也Lock一下。就会进入等候状态。