博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
经典讲解VB.NET线程方法之访问数据库
阅读量:6178 次
发布时间:2019-06-21

本文共 1585 字,大约阅读时间需要 5 分钟。

hot3.png

在向大家详细介绍线程之前,首先让大家了解下线程,然后全面介绍VB.NET线程方法。线程是分配处理器时间的基本单元,线程可以在单个执行线程执行的同时运行多个活动,支持抢先多任务处理的操作系统可以创建多个线程并通过时间片轮转的方式使它们同时运行。在需要良好用户交互的应用以及与网络和进行通讯的应用中,使用多线程能提供良好的交互体验,能对用户的要求做出快速的反应。本文主要介绍.NET中的线程在中的具体应用(用VB.NET实现)。

1 访问线程

在数据库应用中,特别是网络数据库访问,因为可能要访问的数据量较大,因此需要比较长的时间来得到结果,而一个良好的程序应具有良好的交互性,在访问数据库时应允许你的应用程序对用户的活动尽快做出响应,以提供丰富的用户体验。利用多线程机制可以让需要大量时间的操作在后台运行以快速响应用户的活动。下面的代码访问数据库并返回数据表:

 
Private sub GetDataFromDataBase()   …   m_table.Clear()   m_sqlDataAdapter.Fill(m_table)   …   End Sub  

创建Thread对象的新实例,需创建新的线程代理.ThreadStart线程代理可以指定生成线程时要执行的方法名,但线程代理并不实际运行线程.创建ThreadStart对象时,需指定线程开始执行时要运行的方法的指针,该方法不能接受任何参数。下面我们将上面的代码分配给一个线程处理,并且启动它:

 
Dim myThreadStart as ThreadStart =New ThreadStart(AddressOf GetDataFromDataBase)   Dim myThread as Thread=New Thread(myThreadStart)   myThread.Start()  

这样当进行数据库的访问时,用户可以继续进行处理。

2.VB.NET线程方法使用事件

调用了线程的start方法,并不能确保其中的方法马上执行完,而要得到数据访问的结果又必须等其中的方法执行完毕。如果在运行线程后采用循环查询的方法显然影响了交互性,事件是从线程方法返回数据的好方法。只要在VB.NET线程方法所在的类中定义一个事件,在VB.NET线程方法中发出事件,而在窗体类中生成代理。

首先在dealDataBase类声明后加进事件:

 
Public Class dealDataBase   Public Event GetDataComplete(ByVal e As DtatTable)   …   End Class  

在类dealDataBase的GetDataFromDataBase()方法中加入发出事件的代码,放在m_sqlDataAdapter.Fill(m_table)后:

 
Public sub GetDataFromDataBase()   …   m_sqlDataAdapter.Fill(m_table)   RasiseEvent GetDataComplete(m_table)   …   End Sub   

下面在窗体类中生成代理

 
Private Sub dealData (ByVal e As DataTable)   '处理数据表   End Sub  

在创建线程并运行线程的代码中进行事件连接,事件连接代码放在运行线程前, dealDataBase类实例化后:

 
AddHandler myDB. GetDataComplete,AddressOf dealData  

这样,当线程方法执行完毕就会发出事件,而dealData方法会响应事件并做出处理。

 

http://www.qqread.com/vbdotnet/i479742.html

 

转载于:https://my.oschina.net/linchangyu/blog/482137

你可能感兴趣的文章
LDTP
查看>>
StringUtils工具类的常用方法
查看>>
linux下VNC安装与配置
查看>>
URL编码
查看>>
光模块及光纤知识(含分类,常用类型介绍)
查看>>
Apache 单IP多端口设置
查看>>
安装系统前的准备---vmware
查看>>
Tiny并行计算框架之使用介绍
查看>>
Linux od命令
查看>>
一个不错的MySQL集群管理工具
查看>>
mysql-proxy 按表分发查询的lua脚本
查看>>
在wordpress主题下面添加二级菜单
查看>>
CentOS 下JDK安装
查看>>
Nginx + Django
查看>>
我的友情链接
查看>>
用shell脚本编写进度条
查看>>
使用Live555类库实现的网络直播系统
查看>>
IO与NIO
查看>>
go_wed编程笔记
查看>>
iptables防火墙的使用
查看>>