我现在识别了一个信息以后,希望让客户机发送一个消息到服务器,但我希望在识别后能延迟一段时间发送(比如延迟1秒钟发送),同时在发送语句后面的语句不受该延迟的影响(也就是后面的语句不能同样的延迟1秒钟)。所以我不能用sleep语句。
不指导winsock有没有相关的属性和方法来解决这个问题,如果没有,能给我点建议吗?最好有代码示范
问题解决,一定给分!

解决方案 »

  1.   

    嗯~~~也许我没有完全搞清楚你的需求,但我的理解是你完全可以利用Timer,然后把客户端返回消息放在Timer里发送啊,比如:
    function identifyData()
     if dataIsOk() then
      tmrSend.interval=10000
      tmrSend.enabled=true
     end if   
    end functionsub tmrSend_timer()
     tmrSend.enabled=false  '一定要在第一句,防止Timer事件重入。
     sendOK()
    end sub
      

  2.   

    楼上的建议我也考虑过,但是如果我的程序中有多条语句需要做这种延迟呢?
    比如:
    if data1IsOk() then
      延迟
      send(Data1)
    end ifif data2IsOk() then
      延迟(延迟时间可能不同)
      send(Data2)
    end if
    ........
    这样我就必须要多个timer
    如果这样的情况比较频繁,管理起来就比较麻烦了
      

  3.   

    明白你意思了,用sleep函数不行吗?
    对不起,我在我自己的程序当中重来没有用过Sleep函数,所以不知道用Sleep或者类似的API是否可以满足你的需求。以前我也有过类似的需求,当时我是自己写了延时函数,我始终记不起为什么我不用Sleep函数。自己写的延时函数现在手头没有,原型大致如下:
    dim blnTimerOn as Boolean  '全局的变量Private Sub Sleep2(byval SleepTime as long)
     blntimeron=false
     tmrSleep.inteval=sleeptime   '设置延时时间,当然如果需要的延时有可能超过60秒的话,你可以采用每秒中激活一次timer,然后在去累加计算 
     tmrsleep.enabl......
     for i=0 to 1 step 0
      doevents
       if blntimeron then exit for  '到时候了就退出。
     next i
    end subsub tmrSleep_.....
     blnTimer=true
    end sub