VB.NET使用委托解决窗体卡死的情况

    Private Sub 开始读取(sender As Object, e As EventArgs) Handles 开始读取参数按钮.Click
        Dim myInvoker As MethodInvoker = New MethodInvoker(AddressOf 读取参数LongTime)
        myInvoker.BeginInvoke(Nothing, Nothing)
    End Sub
    Private Delegate Sub updateDelegate(ByVal item, ByVal 列表框) '声明一个委托,参数和委托的过程参数保持一致
    Sub 读取参数LongTime()
        'do something
        '假如里面有个ListBox要在这个过程中更新,那么也要使用委托
        '更新ListBox1列表框内的item
        Me.Invoke(New updateDelegate(AddressOf updateItem), updateValue, ListBox1) '委托和过程绑定并执行
    End Sub
    Private Sub updateItem(ByVal item, ByVal 列表框) '委托绑定的过程
        列表框.Items.add(item)
    End Sub

使用委托可以避免窗体假死,但是实际测试发现,程序实行的时间变的很长,不知道有什么办法解决???

在码农的生活中,很多级码农都有这样的经历,会被一个小小的技术问题拦住,然后进度跟不上了,被老板XXXX一大通了。心情不爽了。 好吧,这个曾经是我遇到拦路虎之一。但事实上不是什么大技术。技术就是一层纸,破了就破了。 这是一个关于如何跨窗体操作控件或过程的一个例子。比如,你想用窗体A的按键来执行窗体B的文本框变色。 Imports System Imports System.Threading Imports System.Text Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load CheckForIllegalCrossThreadCalls = False '不写这行,会出错,不允许线程的数据写到TextBox1.Text 中去。 Form2.Show() End Sub Private Sub form1_FormClosing(sender As Object, e As EventArgs) Handles Me.FormClosing ' If runThread.IsAlive = True Then runThread.Abort() End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click '用的是委托方式 Me.Invoke(New MethodInvoker(AddressOf THREAD2)) End Sub Private Sub THREAD2() Static j As Integer j = j + 1 TextBox1.Text = " 这是 [线程] 操作" & vbCrLf & _ " Button2被点了: " & j & " 次" & vbCrLf & "要求是from2.textbox.text= textbox1.text 。[问题]但为什么不能成功显示呢?" End Sub Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged Form2.TextBox1.Text = TextBox1.Text End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Static j As Integer j = j + 1 TextBox1.Text = " 这是 [非线程] 操作" & vbCrLf & _ "Button3 点击了: " & j & " 次" & vbCrLf & _ "要求是from2.textbox.text= textbox1.text, 可以成功显示,这个是对的。" End Sub End Class
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页