我已经用timer倒计时使form unload了,为什么form 由重新加载了?我调试的时候发现unload完,form 还在执行未完成的循环,可能是这个原因导致的,怎么完全卸载呢?!!!谢谢!!
难道unload不会把form里所有东西都卸载掉吗?为什么还会在unload后继续执行?
追答你所说的Timer究竟是系统函数Timer还是指Timer控件?
追问控件,但是form里的循环是用delay来作记时的,timer只是判断是否卸载
追答不建议用循环来进行延时,因为它是在当前进程执行的,会对进程造成阻塞(用DoEvents是把控制权暂时还给CPU,当前进程仍是处在阻塞状态的)。而Timer控件则是在另一进程执行的,当前进程不会受到影响。
建议你在对窗体进行Unload操作前,要完全关闭窗体内的所有活动对象和进程,因为正如上所述,VB在执行Unload时,必须等待当前进程带阻塞效果的代码完全执行完毕才会真正执行的,这期间如果代码调用了窗体中的某个部件,那么窗体又会被自动调入内存的。
至于具体的原因和问题所在,要看过你的代码才知道。
嗯,我觉得你说的很有道理,可是怎么把timer当延迟的效果去弄呢?比如,我在一个command-click里写label1.caption=“1“,我需要过5秒再继续执行label2.caption=“2“,怎么把timer嵌进去呢
追答Private Sub Command1_Click()
Label1.Caption = "1"
Timer1.Interval = 5000 '5秒延迟
Timer1.Enabled = True '启动Timer
End Sub
Private Sub Timer1_Timer()
Label1.Caption = "2"
Timer1.Enabled = False '结束Timer
End Sub
Private Sub delay(delaySeconds As Long)
Dim lngFinish As Long
lngFinish = Timer + 2
Do While Timer < lngFinish
DoEvents
Loop
End Sub
调试的时候,unload完他还在做delay里的循环,怎么办
Private Sub delay(delaySeconds As Long)
Dim lngFinish As Long
lngFinish = Timer + 2
Do While Timer < lngFinish
DoEvents
if bln=true then exit do
Loop
End Sub
这个bln设置为全局变量
貌似他说益出。。。
追答溢出 在哪一行代码
本回答被网友采纳