gpt4 book ai didi

vb.net - VB-如何从在另一个线程(串行对象)上运行的类访问数据

转载 作者:行者123 更新时间:2023-12-03 13:13:15 25 4
gpt4 key购买 nike

我正在编写一个名为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条件?关于线程在这种情况下如何工作的更多信息也会很棒。

最佳答案

InvokeRequired是必需的,因为只能由创建控件的线程(通常是主线程)修改UI。

为了“避免”它,请设计代码以分隔职责-将UI修改与处理串行端口的代码保持在不同的层中。

您仍然需要检查InvokeRequired是否在某些地方(您确实将后端与UI相连),但是应该只在一个“层”中。

关于vb.net - VB-如何从在另一个线程(串行对象)上运行的类访问数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13209465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com