回 帖 发 新 帖 刷新版面

主题:msgbox未返回前能执行其他语句?

两个按钮,一个 timer

Sub Command1_Click()
MsgBox "clicked."
Print "command1"
End Sub
Sub Form_load()
Timer1 = False
Timer1.Interval = 6000
End Sub

Private Sub Command2_Click()
Print "timer1 6秒后执行,在6秒内点击command1,然后等等"
Timer1 = True
End Sub

Private Sub Timer1_Timer()
MsgBox "time" & Time
Print "timer1"
Timer1 = False
End Sub




当点击了command2后点击command1,按理说没有用doevents 在点确定之前timer1_timer是不会执行的,调试状态下事实也是如此,但编译成exe怎么就不同了?难道exe下是多线程?





回复列表 (共3个回复)

沙发

在任务管理器下看进程  确实是单线程的
按理说程序是应该被挂起的  
为了防止被挂起 我一般都用 API messageBox 来显示 这不会使程序挂起

板凳

[quote]在任务管理器下看进程  确实是单线程的
按理说程序是应该被挂起的  
为了防止被挂起 我一般都用 API messageBox 来显示 这不会使程序挂起[/quote]

不是吧,我试了一下MessageBox,线程照样被挂起

3 楼

我也是这个情况.
线程挂起不影响TIMER控件事件.

不光是MSGBOX

使用.
FORM.SHOW 1
强制弹出模态窗体时.父窗体及代码被挂起等待.
但我做的那个时钟还在走.

我来回复

您尚未登录,请登录后再回复。点此登录或注册