【发布时间】:2012-01-24 20:56:03
【问题描述】:
也许我被弯了...但事实是我在线程方面有点n00b...
我在课堂上使用串行端口。我正在从那个班级向我的班级提出一个事件。事件包含接收到的数据...
我希望从引发的事件中简单地填充一个文本框。
现在我并没有专门创建一个单独的线程,但是当我尝试在 UI 上更新我的文本框时,我得到了正常的交叉线程错误,所以我的假设是串行端口及其内部方法可能会创建自己的线程......
不管怎样,我对如何从我的主窗体正确实现一个调用,指向实例化类中的线程有点困惑......
我希望这是有道理的......
Dim WithEvents tmpRS232 As New clsRS232
Private Sub but_txt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles but_txt.Click
tmpRS232.Set_com_port("COM8", 38400)
tmpRS232.Transmit_data(txt_tx.Text)
End Sub
Private Sub tmprs232_rx_data_returned(ByVal str_data As String) Handles tmpRS232.rx_data_returned
txt_rx.Text = str_data 'Cross threading error
MsgBox(str_data) 'Fires without errors
End Sub
有人可以提供基于此代码的代码示例吗?
谢谢。
【问题讨论】:
-
你不能从非 UI 线程修改 UI [如何在 C# 中从另一个线程更新 GUI][1] [1]:stackoverflow.com/questions/661561/…
-
是的,我知道...只是不确定在这种情况下“如何”调用...
标签: vb.net multithreading serial-port invoke