经典讲解VB.NET线程方法之访问数据库

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

创新互联建站自成立以来,一直致力于为企业提供从网站策划、网站设计、网站设计、成都网站制作、电子商务、网站推广、网站优化到为企业提供个性化软件开发等基于互联网的全面整合营销服务。公司拥有丰富的网站建设和互联网应用系统开发管理经验、成熟的应用系统解决方案、优秀的网站开发工程师团队及专业的网站设计师团队。

1 创建数据库访问线程

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

 
 
 
  1. Private sub GetDataFromDataBase()
  2. m_table.Clear()
  3. m_sqlDataAdapter.Fill(m_table)
  4. End Sub 

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

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

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

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

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

 
 
 
  1. Public Class dealDataBase
  2. Public Event GetDataComplete(ByVal e As DtatTable)
  3. End Class 

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

 
 
 
  1. Public sub GetDataFromDataBase()
  2. m_sqlDataAdapter.Fill(m_table)
  3. RasiseEvent GetDataComplete(m_table)
  4. End Sub  

下面在窗体类中生成代理

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

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

 
 
 
  1. AddHandler myDB. GetDataComplete,AddressOf dealData 

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

网页标题:经典讲解VB.NET线程方法之访问数据库
文章出自:http://www.shufengxianlan.com/qtweb/news44/147694.html

成都网站建设公司_创新互联,为您提供营销型网站建设网站维护做网站建站公司搜索引擎优化外贸建站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联