我試圖在一個線程內創建一個循環,當它向我顯示文本框中的值時,繼續在我的表單中工作。 問題是,當它啓動時,我不能在窗體中做任何事情,例如按下按鈕或設置命令。vb.net如何在每個循環中顯示什麼線程正在計算並繼續在窗體中工作?
這裏是代碼的理念:
Imports System.Threading
Public Class Form1
Dim trd As System.Threading.Thread
Dim cont As Integer
Private Sub btnOpen_Click(sender As Object, e As EventArgs) Handles btnOpen.Click
cont = 0
trd = New Thread(AddressOf trdReadAxis)
trd.Start()
End Sub
Private Delegate Sub CloseFormCallback()
Private Sub trdReadAxis()
While cont < 10
If InvokeRequired Then
Dim d As New CloseFormCallback(AddressOf trdReadAxis)
Invoke(d, Nothing)
Else
txtXPosition.Text = cont
cont += 1
Thread.Sleep(1000)
End If
end while
end class
我能做些什麼,看everi第二的變化在我的文本框「txtXPosition」?
謝謝。
使用'txtXPosition.Update()'或'txtXPosition.Refresh()'...的原因你的窗體和控件被鎖定是因爲你正在UI線程上執行代碼。 – Codexer
我會推薦使用[BackgroundWorker](https://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker(v = vs.110).aspx),因爲它很容易實現和預定義這樣的任務 –