スレッド内でループを作成しようとしましたが、テキストボックスに値が表示されている間もフォームで作業を続けます。 問題は、起動時にボタンを押したりコマンドを設定したりするなど、何もできないということです。ここで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第2の変更「txtXPosition」を参照して何ができますか?
ありがとうございます。
使用 'txtXPosition.Update()'や 'txtXPosition.Refresh()' ...理由フォームとコントロールがロックされるのは、UIスレッドでコードを実行しているためです。 – Codexer
実装が簡単で、事前に定義されているため、[BackgroundWorker](https://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker(v = vs.110).aspx)の使用をお勧めしますそのような仕事 –