我见过很多解决这个问题的可能方案,但似乎都不起作用。
Try
Dim ricevuto As String
ricevuto = SerialPort1.ReadExisting
If String.Compare(ricevuto.Substring(ricevuto.Length - 3), "OF") = 0 Then
Me.Label1.Text = "aperto"
Me.Label1.Refresh()
ElseIf String.Compare(ricevuto.Substring(ricevuto.Length - 3), "ON") = 0 Then
Me.Label1.Text = "chiuso"
Me.Label1.Update()
End If
Catch ex As Exception
End Try
这是代码,但Label1不会更改。
UPDATE:错误为";跨线程操作无效";
错误为"跨线程操作无效";
当您使用多个线程,并且您不再使用UI线程时,您需要Invoke
更改:
Label1.Invoke(Sub() Label1.Text = "aperto")
展示全部内容:
Dim ricevuto As String = SerialPort1.ReadExisting()
Dim key As String = ricevuto.Substring(ricevuto.Length - 3)
If String.Compare(key, "OF") = 0 Then
Label1.Invoke(Sub() Label1.Text = "aperto")
ElseIf String.Compare(key, "ON") = 0 Then
Label1.Invoke(Sub() Label1.Text = "chiuso")
End If