VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • VB.Net 解决winForm界面卡死

问题,利用多线程解决界面卡死时,控件不能在新建的线程中访问。

 

解决方法,

可使用Invoke或BeginInvoke拥有此控件的基础窗口句柄的线程上执行指定的委托。

Invoke 方法 (Delegate) :拥有此控件的基础窗口句柄的线程上执行指定的委托;

BeginInvoke 方法 (Delegate) :在创建控件的基础句柄所在线程上异步执行指定委托。

代码:

 


  1.  
    Public Class Form1
  2.  
    Private Delegate Sub AddLstItemDelegate(ByRef lst As ListBox, ByVal txt As String)
  3.  
    Private Sub AddLstItemInvoke(ByRef lst As ListBox, ByVal txt As String)
  4.  
    lst.Items.Add(txt)
  5.  
    End Sub
  6.  
    Private th As Threading.Thread
  7.  
     
  8.  
    Private Sub TaskTest()
  9.  
     
  10.  
    Dim i As Integer
  11.  
    For i = 0 To 20
  12.  
    Threading.Thread.Sleep(1000)
  13.  
    ListBox1.Invoke(New AddLstItemDelegate(AddressOf AddLstItemInvoke), New Object() {ListBox1, i.ToString})
  14.  
    Next
  15.  
     
  16.  
    End Sub
  17.  
     
  18.  
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  19.  
     
  20.  
    th = New Threading.Thread(AddressOf TaskTest)
  21.  
    th.Start()
  22.  
    End Sub
  23.  
    End Class
 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/will1990/p/4907298.html


相关教程