首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

VB.NET多线程界面交互有关问题

2012-04-12 
VB.NET多线程界面交互问题VB.NET编写的pocket pc程序,在开始运行到完成运行中,界面处于假死状态,其他控件

VB.NET多线程界面交互问题
VB.NET编写的pocket pc程序,在开始运行到完成运行中,界面处于假死状态,其他控件无法操作。
使用多线程但提示“其他Control.Invoke 必须用于与在独立线程上创建的控件交互”
程序运行时要获取控件值并要写入信息到textbox控件
这个多线程与界面交互的问题如何解决,或者不用多线程有没其他办法解决程序在运行中,其他可以控件操作,例如暂停程序运行,或者停止运行。
多线程代码如下:

VB.NET code
  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


[解决办法]
很简单的。
VB.NET code
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 

热点排行