投稿者 素人  (学生) 投稿日時 2019/6/18 10:36:23
Serialポートを使用してデータの受信を行っています。

◆実現したいこと
例えば、
受信データが"A"だった場合は、TextBox11.Text="正常"
受信データが"B"だった場合は、TextBox11.Text="異常"  と表示させたいです。

◆今の状況
Serialポートを使用してデータの受信はできました。
しかし、SerialPort1_DataReceivedイベントないで、TextBox11.Textの表示をさせようとしたところ、次のエラーが出てしまい、エラーの内容と原因が分からず困っております。

◆エラーメッセージ
System.InvalidOperationException
  HResult=0x80131509
  Message=有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'TextBox11' がアクセスされました。

◆試しているコード
   Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

        If SerialPort1.IsOpen = False Then
            Return
        End If
        TextBox11.Text = "テスト中"
        Try
            Dim data As String
            data = SerialPort1.ReadExisting()

            Invoke(New Delegate_RcvDataToTextBox(AddressOf Me.RcvDataToTextBox), args)
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

    End Sub