VB.NET多线程界面交互问题
VB.NET编写的pocket pc程序,在开始运行到完成运行中,界面处于假死状态,其他控件无法操作。
使用多线程但提示“其他Control.Invoke 必须用于与在独立线程上创建的控件交互”
程序运行时要获取控件值并要写入信息到textbox控件
这个多线程与界面交互的问题如何解决,或者不用多线程有没其他办法解决程序在运行中,其他可以控件操作,例如暂停程序运行,或者停止运行。
多线程代码如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cl_celiang.Click myThread = New Thread(AddressOf celiang) myThread.Start()end sub Sub celiang() textbox1.Text = "目前处于自动观测模式" & vbCrLf & "请等待仪器进行自动观测" Threading.Thread.Sleep(2000) '延时函数 textbox1.Text = ""'以下略’以下为数据读控件取数据并计算将结果输出至textbox控件end sub
Public Class Form1 Public Delegate Sub ChangeTextDelegate(ByVal tb As TextBox, ByVal Conetnt As String) Dim myThread As Threading.Thread Public Sub ChangeTextInvoke(ByVal tb As TextBox, ByVal Conetnt As String) tb.Text = Conetnt End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click myThread = New Threading.Thread(AddressOf celiang) myThread.Start() End Sub Private Sub celiang() 'textbox1.Text = "目前处于自动观测模式" & vbCrLf & "请等待仪器进行自动观测" TextBox1.Invoke(New ChangeTextDelegate(AddressOf ChangeTextInvoke), New Object() {TextBox1, "目前处于自动观测模式" & vbCrLf & "请等待仪器进行自动观测"}) Threading.Thread.Sleep(2000) '延时函数 'textbox1.Text = "" TextBox1.Invoke(New ChangeTextDelegate(AddressOf ChangeTextInvoke), New Object() {TextBox1, "开始观察text3的文本"}) Threading.Thread.Sleep(1000) '延时函数 '以下略 '以下为数据读控件取数据并计算将结果输出至textbox控件 TextBox2.Invoke(New ChangeTextDelegate(AddressOf ChangeTextInvoke), New Object() {TextBox2, "计算结果是:123456789"}) Threading.Thread.Sleep(1000) '延时函数 TextBox3.Invoke(New ChangeTextDelegate(AddressOf ChangeTextInvoke), New Object() {TextBox3, Me.TextBox1.Text & "--" & Me.TextBox2.Text}) End SubEnd Class