非同期での処理中に、ワーカースレッド(メインスレッド以外)でフラグを立った場合
メインスレッドで特定の関数を実行するような方法はありますでしょうか?
具体的には、シリアルポートオープン後に、下記のような受信イベントが発生し、特定のデータを受信した場合に、受信データをテキストボックスに書き出すというようなことをしたいです。
メインスレッドでなければ、テキストボックスの値が変更できないため質問いたします。
VB.NET
1Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived 2 3 'シリアルポートをオープンしていない場合、処理を行わない. 4 If SerialPort1.IsOpen = False Then 5 Return 6 End If 7 8 Try 9 '受信データを読み込む. 10 Dim data As String 11 data = SerialPort1.ReadExisting() 12 13 '受信したデータをテキストボックスに書き込む. 14 Dim args(0) As Object 15 args(0) = data 16 Invoke( New Delegate_RcvDataToTextBox( AddressOf Me.RcvDataToTextBox ), args ) 17 Catch ex As Exception 18 MsgBox( ex.Message ) 19 End Try 20 21End Sub