我正在编写一个名为 Field 的类,它使用串行对象从 Arduino 获取一些值。我有一个由类引发的事件(当从串行端口接收到数据时,或多或少),当发生这种情况时,我需要从这个类中检索数据。下面的代码有效,但似乎没有按照我需要的方式这样做。我对线程如何工作的了解很少,我只知道串行端口对象在它自己的线程中运行,这使得使用它变得非常痛苦。
Private Sub Field_eScore() Handles Field.eScore
If InvokeRequired Then
Invoke(Sub() lbl_COM_data.Text = Field.GetComData())
Else
lbl_COM_data.Text = Field.GetComData()
End If
End Sub
有没有一种方法可以轻松访问在另一个线程中运行的数据,而不涉及这些“InvokeRequired”If-Then 条件?有关在这种情况下线程如何工作的更多信息也很棒。