怎么在定时器里做一个定期时器的类啊?我准备用这个CreateWaitableTimer()函数的.可有人说这个是延时....不能做定时器....郁闷...大家帮个忙啊..........

解决方案 »

  1.   

    呵呵,为什么定时器类,现在有SetTimer、多媒体定时器,线程也可以作为定时器,为什么还要定时器类?
      

  2.   

    CreateWaitableTimer当然也可以做定时器用了,不过如果有多个同时用,可能会造成死锁
      

  3.   

    http://www.codeguru.com/Cpp/W-P/system/timers/article.php/c5781/
    http://www.codeguru.com/Cpp/W-P/system/timers/article.php/c5753/
    http://www.codeguru.com/Cpp/W-P/system/timers/article.php/c5759/
    http://www.codeguru.com/Cpp/W-P/system/timers/article.php/c2837/
    上面有四个例子。
      

  4.   

    线程(Thread) + 事件(CEvent) 也可以用来定时的嘛。
    这就要看楼主是什么样的应用了。
      

  5.   

    楼上的各位大哥能否帮我看看这个贴子:
    http://community.csdn.net/Expert/topic/3599/3599149.xml?temp=.6126215
    谢谢了呀
      

  6.   

    为什么我旁边的一个老程序员说DLL不能用CreateWaitableTimer和settimer做啊...
    忘了说了.我的程序是这样的:我用UDP做了一个传输文件夹的DLL.但在因特网上传要丢包..所以我每发一个数据包就收到一个确认包..如果丢了包的话我就在十秒钟后重发...所以就要有一个定时器嘛....你们说说怎么做啊?
      

  7.   

    为什么我旁边的一个老程序员说DLL不能用CreateWaitableTimer和settimer做啊...
    忘了说了.我的程序是这样的:我用UDP做了一个传输文件夹的DLL.但在因特网上传要丢包..所以我每发一个数据包就收到一个确认包..如果丢了包的话我就在十秒钟后重发...所以就要有一个定时器嘛....你们说说怎么做啊?-----------------------------------------------------------------
    用WaitForSingleObject阿,如果收到确认,则使某个事件有信号,如果在一段时间内
    没有收到确认,则WaitForSingleObject就超时了,然后重发。
      

  8.   

    用WaitForSingleObject()设超时,也可直接对套接字设超时:
    int TimeOut=100;          //设置接收超时100ms,s上100ms未收到数据,recvfrom()会返回-1
    ::setsockopt(s,SOL_SOCKET,SO_RCVTIMEO,(char *)&TimeOut,sizeof(TimeOut));
    以后在:
    while(true)
    {
       iRet=recvfrom(s,...);
       if(iRet==-1)
        {
         发现超时,请求对方重发;
        }
       ....
    }
      

  9.   

    用select模型也可以设定超时的,最后一个参数就是设定超时时间