对 Windows 窗体控件进行线程安全调用
--------------------编程问答-------------------- 跨线程访问窗体控件是不安全的,如果非要访问,建议用backgroundworker部件来访问,比直接操作thread要方便 --------------------编程问答-------------------- Me.Label1.Text = "This text was set unsafely."=〉
Me.Invoke(New Action(Sub()
Me.Label1.Text = "This text was set unsafely."
End Sub)) --------------------编程问答-------------------- 就是委托的用法
借用另外一个帖子的内容进行介绍
Delegate Sub SetTextCallback(ByVal InputString As String) '定义一个委托
Private Sub ShowString(ByVal comData As String) 定义一个过程
Label1.Text &= comData
End Sub
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim inData As String = SerialPort1.ReadLine
Dim d As New SetTextCallback(AddressOf ShowString) '新建一个委托实例,把委托内容指向写文本的那个过程
Invoke(d, inData) '委托!(串口事件属于另一个线程,所以调用窗体控件需要委托来做)
End Sub
补充:.NET技术 , VB.NET