【发布时间】:2015-10-15 07:31:19
【问题描述】:
这是我第一次使用串行端口,所以我才知道它们在不同的线程上运行,我对多线程一无所知,所以我不知道从哪里开始修复我的代码,网络搜索让我更加困惑调用之类的东西。
这是我通过 rs232 端口连接的条形码扫描仪的全部代码,我只是在接收数据并将其放在标签上。
将标签文本设置为接收到的数据时出现错误...
跨线程操作无效:控件“Label1”从创建它的线程以外的线程访问。
Imports System.IO.Ports
Public Class Form1
Dim WithEvents com4 As New SerialPort
Private Sub com4_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles com4.DataReceived
Dim returnStr As String
returnStr = com4.ReadExisting
Label1.Text = returnStr
com4.DiscardInBuffer()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
With com4
.PortName = "Com4"
.BaudRate = 38400 '9600
.Parity = Parity.None
.DataBits = 8
.StopBits = StopBits.One
End With
com4.Open()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
End Class
【问题讨论】:
标签: vb.net multithreading winforms serial-port