我16个一样的线程,读不同的串口,有这样的一个配置
3秒,5秒,10分钟,30分钟
我要分别在这几个时间点操作(线程1读串口1,线程2读串口2)。在线程类(继承自CWinThread)里如何实现

解决方案 »

  1.   

    主界面线程中设置不同的Timer,在OnTimer()里对每个不同Timer响应时,设置不同的标记量(CEvent或bool都可以),然后在每个线程中WaitForSingleObject或Check与本线程相关的变量,等到之后,就做事情,不知道行不?OnTimer(uTimer)
    {
       m_evTest[uTimer].SetEvent();
    }UINT ThreadTest(LPVOID lParam)
    {
        
        WaitForSingleObject(g_pThis->m_evTest[uTimer]->m_hObject, INFINITE);   // uTimer是每个线程本身 的ID号,可以与timer相同    //  Do something here..........
    }
      

  2.   

    在创建时钟时会得到一个int型的返回值,在OnTimer()中用switch() {case :break;default:}来对不同的Timer处理.
      

  3.   

    用16个settimer,设置了16个定时器,然后把16个定时器调到你需要的时间,在ontimer()中调用你需要的操作就行了,
      

  4.   

    典型的多线程同时触发问题。创建一个事件,初始化为无信号,所有线程都WaitForSingalObject等待这个事件,主线程SetTimer,收到定时消息时PulseEvent。