我的项目是vb.net 2010的Windows桌面形式。 到目前为止,单线程(默认)。螺纹。如何按钮点击中断/影响程序流程
如果一个子程序的一对......在它下一个循环运行,如果ButtonClick事件被触发会发生什么以及该事件中的变量发生变化?像:程序执行离开正在运行的循环吗?还是继续运行,而该变量是由buttonclick事件改变的?
我的目标是什么了: 如果有人点击该按钮,blnRequestStop设置为True。 对于...下一个循环,在“next”之前它检查blnRequestStop。如果为true,那么它将退出“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
这听起来像你在UI线程中有一个长期运行的任务。基本上你不应该这样做...... –
当你点击一个按钮时,所发生的事情就是排队(不是即时运行)。一旦你的GUI线程(你的'Form'是new Form(“form1”)''d')的线程可用(空闲),它将读取队列并运行你的按钮单击事件。你的GUI线程将不会闲置直到它退出For ... Next SUB(我已经习惯了C#,否则我会用代码来回答)看看这个http://msdn.microsoft.com/en-us/library/dd537609.aspx? cs-save-lang = 1&cs-lang = vb#code-snippet-1 – HodlDwon