我的項目是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