当前位置:编程学习 > VB >>

延时程序偶然出现程序无响应现象

一个需要延时10s左右的函数,需要等待信号发送完毕之后返回到某函数处继续执行。该延时程序是这么写的。
Public Sub waitsend(PauseTime As Double)
    Dim StartTime As Single
    
    StartTime = GetTickCount
    Do While GetTickCount < StartTime + PauseTime
                
        DoEvents
       
        If StopTag = True Then Exit Sub
    
    Loop
End Sub

现在问题是:在偶然情况下,程序出现无响应现象,该现象出现1分钟左右回复正常,程序继续执行。
程序正常执行时,cpu占用率在40%左右,如果无响应现象出现,cpu占用率下降到4%左右。
从代码各种现象来看,现在怀疑问题出现在这个函数里面。

是不是在doevents的时候,OS干其他事情造成这个问题?

现在请问这种现象出现的原因是什么?用什么方法代替会比较好?

平台:操作系统,windows xp home版
      cpu,赛扬p4 1.8g
      内存,256M
      空闲内存,100M左右
已经停掉绝大部分无关服务。 --------------------编程问答-------------------- 是不是StartTime + PauseTime的问题,single+double,精度不同之间的运算要留心一下,其他的基本没有什么问题~~ --------------------编程问答-------------------- 不一定是程序的问题,也有可能是病毒或其他问题产生的 --------------------编程问答-------------------- Public Sub waitsend(ByVal PauseTime As Long)
    
    Dim StartTime As Long
    
    StartTime = GetTickCount()
    
    Do While (StartTime + PauseTime > GetTickCount())
        
        Sleep 1
        DoEvents
        
        If StopTag = True Then Exit Do
    
    Loop

End Sub --------------------编程问答-------------------- 程序应该不是多线程的吧,sleep 只会导致发送不成功。
用 DoEvents 最容易出现的错误是消息重入,用 debug.print 调试一下,看是不是在这个处理未结束时又进来了
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,