控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

VB.NET线程方法介绍

作者:不详 出处:IT专家网 2010年02月03日 阅读:

在向大家详细介绍VB.NET线程之前,首先让大家了解下线程,然后全面介绍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方法会响应事件并做出处理。

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统