スレッドを使ってループ処理をする場合、
たとえば、
TextBox1.Text = ”Hello” は、スレッド中に直接記述することはできない。
スレッド中でも間接的にコントロールを触る方法はある。
記述の仕方がいろいろ掲載されているため、自分にとってどれが
いいのか判断しにくい。
安全では無いかもしれないけれど、簡潔で動作したので
メモしておく。(結構使用したが、特に問題なし)
' ・対象とするスレッドの宣言
Public Thread_Rx As System.Threading.Thread
--
' ・コントロールの表示変更をする関数
Private Sub ShowLed()
' LEDを模したコントロールの表示変更処理
label1.BackColor = Color.Red
End Sub
--
' ・スレッド本体
Public Sub Thread_Rx1() 'スレッド本体
While(True)
Thread.Sleep(10)
' LED表示変更処理
End While
End Sub
--
スレッドをSTART!
Dim thread1 As New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf Thread_Rx1))
thread1.Start()
thread1.Start()
※スレッドを終了するときは、別途STOPする(他サイト参照)。
---
記述方法が違うが参考になるサイト。なぜInvokeが必要か分かる
これにより、スレッド本体からLEDを模すlabel1へアクセスできる。
- 余 談 -
C#の場合、
--------