现在有一个窗体 窗体上有一个按钮 并且窗体代码里面有这样一个过程sub XXX()
'这里有很多代码,需要一定时间才能完成
End subPrivate Sub Command1_Click()
XXX'调用XXX过程
End sub现在我按下按钮,于是调用了XXX过程,我在XXX过程运行完毕之前再次按下按钮,于是之前的XXX被停下,开始运行第二个XXX过程,等第二个XXX执行完毕了,第一个XXX过程从被打断的地方继续运行.如果我现在希望第二个xxx过程执行完毕以后,不让之前的xxx过程继续运行应该怎么办呢?
'这里有很多代码,需要一定时间才能完成
End subPrivate Sub Command1_Click()
XXX'调用XXX过程
End sub现在我按下按钮,于是调用了XXX过程,我在XXX过程运行完毕之前再次按下按钮,于是之前的XXX被停下,开始运行第二个XXX过程,等第二个XXX执行完毕了,第一个XXX过程从被打断的地方继续运行.如果我现在希望第二个xxx过程执行完毕以后,不让之前的xxx过程继续运行应该怎么办呢?
解决方案 »
- [求助]如何让鼠标在Form1切换到Form2后,再关闭Form2,就算鼠标位置改变,也不触发Form1的鼠标移动事件?
- 一个datagrid的全局过程在其他Form中如何调用?
- 如何为MDI窗体的各窗体定义局部热键?
- 〓Tiger_Zhao 〓请进,当然也欢迎其它高手,再帮我解决下打印问题
- vb如何去掉用ALTER TABLE语句动态添加字段,所带的单引号,
- 如何在程序中设定DataReport与结果集的对应关系?
- 求程序思路:本地数据库如何与远程的数据库保持一致?
- ★★★有QQ号码赠送!!你想要吗?(限量赠送!)
- 关于COM+的Type lib
- 请问脚本能插入ASP代码吗,如《SCRIPT LANGUAGE=“VBSCRIPT”》《% =”HI“ %》《/SCRIPT》??
- Setup Factory 7.0 打包的问题
- 专家救急!!!vb调用vc函数中的数组参数如何传递!!!
'这里有很多代码,需要一定时间才能完成
MsgBox ("运行了" & i + 1 & "次")
'运行结束时
RunEnd = True: i = i + 1
End Sub
Private Sub Form_Load()
RunEnd = False: i = 0
End Sub
Private Sub Command1_Click()
If i = 0 Or RunEnd Then
XXX '调用XXX过程
else
msgbox("过程没有运行完毕!")
End If
End Sub
Command1.Enabled = False
XXX'调用XXX过程
Command1.Enabled = True
End sub
blnStop = False
blnRunning = True '这里有很多代码,需要一定时间才能完成
'......
'在循环中
DoEvents
If blnStop Then
blnRunning = False
Exit Sub
End If
'......
blnRunning = False
End sub Private Sub Command1_Click()
blnStop = True
Do While blnRunning
DoEvents
Loop
XXX'调用XXX过程
End sub 实际上,相当于:
1 调用者向过程喊道:“停下来!”。
2 等听到过程回答:“停了。”调用者再喊:“跑起来!”
请看看是不是我哪里理解错误了
Option ExplicitDim blnStop As Boolean, blnRunning As Boolean
Dim i As Long '循环用变量
Dim RunIndex As Integer '用来标记过程运行的实例号Sub XXX()
RunIndex = RunIndex + 1 '每次启动过程'实例编号被+1 Dim M_RunIndex As Integer '过程内部变量,用来识别这个过程的实例编号 M_RunIndex = RunIndex Debug.Print "XXX 开始运行 实例号=", M_RunIndex
blnStop = False
blnRunning = True
For i = 0 To 1000000 '这里有很多代码,需要一定时间才能完成 DoEvents If blnStop Then
blnRunning = False
Debug.Print "被打断" GoTo BreakSub
End If NextBreakSub: blnRunning = False
Debug.Print "XXX 结束运行 实例号=", M_RunIndex
RunIndex = RunIndex - 1 '每次结束过程'实例编号被-1
End SubPrivate Sub Command1_Click()
blnStop = True
Do While blnRunning
DoEvents
Loop
XXX '调用XXX过程
End Sub
不过不是在do loop里面来检测是否所有的过程实例都已经自我了断了
而是加了一个timer