在线程中可以使用定时器吗网络开发  采用阻塞 同步 机制,
在线程中一直等待客户发过来的数据,有数据则处理,无数据则阻塞。
如果 现在在此线程中加入定时器  那么定时器会按时响应吗?
应该如何设置?
另外 如果只是普通的线程,可以使用定时器吗?

解决方案 »

  1.   

    m_uShutdownTimerID = ::SetTimer( NULL, NULL, m_uClntShutdownElapse, AutoShutdownTimerProc );void CALLBACK CShutdownThread::AutoShutdownTimerProc( HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
    {
    ....
    }
      

  2.   

    可以
    UINT ThreadProc(LPVOID)
    { SetTimer(NULL, 1, 5000, NULL);
    MSG msg;
    // PeekMessage 强制系统为该线程建立消息栈
    PeekMessage(&msg, NULL, NULL, NULL, FALSE);
    while (GetMessage(&msg, NULL, NULL, NULL))
    {
    switch (msg.message)
    {
    case WM_TIMER:
    {
    // 在这里处理Timer消息
    }
    break;
    }
            //TranslateMessage(&msg); 
    //DispatchMessage(&msg);
    }
    KillTimer(NULL, 1);
    return 0;
    }
      

  3.   

    要有消息回圈,要不然callback函數是不會被執行的