VB.Net 解决winForm界面卡死
2015-06-30 00:01
288 查看
问题,利用多线程解决界面卡死时,控件不能在新建的线程中访问。
解决方法,
可使用Invoke或BeginInvoke,在拥有此控件的基础窗口句柄的线程上执行指定的委托。
Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线程上执行指定的委托;
BeginInvoke 方法 (Delegate) :在创建控件的基础句柄所在线程上异步执行指定委托。
代码:
解决方法,
可使用Invoke或BeginInvoke,在拥有此控件的基础窗口句柄的线程上执行指定的委托。
Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线程上执行指定的委托;
BeginInvoke 方法 (Delegate) :在创建控件的基础句柄所在线程上异步执行指定委托。
代码:
Public Class Form1 Private Delegate Sub AddLstItemDelegate(ByRef lst As ListBox, ByVal txt As String) Private Sub AddLstItemInvoke(ByRef lst As ListBox, ByVal txt As String) lst.Items.Add(txt) End Sub Private th As Threading.Thread Private Sub TaskTest() Dim i As Integer For i = 0 To 20 Threading.Thread.Sleep(1000) ListBox1.Invoke(New AddLstItemDelegate(AddressOf AddLstItemInvoke), New Object() {ListBox1, i.ToString}) Next End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click th = New Threading.Thread(AddressOf TaskTest) th.Start() End Sub End Class
相关文章推荐
- Python3写爬虫(四)多线程实现数据爬取
- C#实现多线程的同步方法实例分析
- VB.NET校验字符串函数
- C#简单多线程同步和优先权用法实例
- VB.NET实现验证信用卡卡号
- C#多线程学习之(四)使用线程池进行多线程的自动管理
- C#多线程编程中的锁系统(三)
- C#多线程学习之(六)互斥对象用法实例
- 基于一个应用程序多线程误用的分析详解
- C#多线程学习之(三)生产者和消费者用法分析
- C#多线程学习之(一)多线程的相关概念分析
- C#多线程之Thread中Thread.IsAlive属性用法分析
- C#使用委托(delegate)实现在两个form之间传递数据的方法
- C#控制台下测试多线程的方法
- Ruby 多线程的潜力和弱点分析
- VB.NET中TextBox的智能感知应用实例
- C#中WPF使用多线程调用窗体组件的方法
- winform异型不规则界面设计的实现方法
- c#实现多线程局域网聊天系统
- PHP使用CURL实现多线程抓取网页