我的项目是vb.net 2010 windows桌面形式。到目前为止,单线程(默认)。
如果 SUB 例程中有一个正在运行的 for...next 循环,那么如果触发了 buttonclick 事件并且在该事件中更改了变量,会发生什么情况?比如:程序执行是否离开了正在运行的循环?还是在 buttonclick 事件更改该变量时继续运行?
我的目标是:如果有人点击按钮,blnRequestStop 设置为 True。在那个 for...next 循环中,就在“next”之前,它检查 blnRequestStop。如果为真,那么它将退出“for”循环。
我猜我需要使用线程?谁能给我一个简单的例子,好吗?
编辑:下面的代码似乎工作正常。但也许你们都看到了问题?
If (btnProcess.Text = "Done!") Then
End
ElseIf (btnProcess.Text = "IMPORT") Then
bRequestStop = False
t1 = New Thread(AddressOf ProcessDo)
t1.Start()
Else
t2 = New Thread(AddressOf MyInterrupt)
t2.Start()
End If
这是 ProcessDo 和 MyInterrupt 所做的简短版本:
Private Sub ProcessDo()
For each X in blahblah
'do stuff (yes, includes interface)
if (blnInterrupt) then exit For
Next X
End
End Sub
Private Sub MyInterrupt()
blnInterrupt=true
End Sub