简单分析VB.NET使用线程

开发 后端
这里介绍VB.NET使用线程,开发者一直要求微软为VB加入更多的多线程功能,对于VB.NET也是这样。VB6已经支持建立多线程的EXE、DLL和OCX。

VB.NET还是比较常用的,于是我研究了一下VB.NET使用线程,在这里拿出来和大家分享一下,希望对大家有用。

开发者一直要求微软为VB加入更多的多线程功能,对于VB.NET也是这样。VB6已经支持建立多线程的EXE、DLL和OCX。不过使用多线程这个词语,可能也不太确切。因此VB6仅支持运行多个单线程的单元。一个单元实际上是代码执行的空间,而单元的边界限制了代码访问任何单元以外的事物。

VB.NET就不同了,它支持建立自由线程(free-threaded)的应用。这意味着多个线程可以访问同样一套的共享数据。本文的以下部分将讨论一下多线程的一些基本点。

问题

虽然VB6支持多个单线程的单元,不过它并不支持一个自由线程的模型,即不允许多个线程使用同一套数据。在许多的情况下,你需要建立一个新的线程来进行后台的处理,这样可提高应用的可用性,否则,一个长的处理就可以令程序的响应变得很慢,例如你按下表格上的一个取消按钮,却很久都没有响应。

解决办法

由于VB.NET使用了CLR(Common Language Runtime),从而拥有了许多的新特性,其中的一个是可以创建自由线程的应用。

VB.NET使用线程

VB.NET使用线程是很简单的。我们将在后面涉及其中的细节,现在我们首先来创建一个简单的表格,它使用一个新的线程来运行一个后台处理。***件要做的事情是创建运行在新线程上的后台任务。以下的代码执行一个相当长的运行处理--一个无限的循环:

  1. Private Sub BackgroundProcess()  
  2. Dim i As Integer =   
  3. Do While True  
  4. ListBox1.Items.Add("Iterations: " + i)  
  5. i += 1  
  6. Loop  
  7. End Sub 

这段代码无限地循环,并且在每次执行时为表格上的一个列表框加入一个项目。如果你对VB.NET不熟悉的话,你将会发现这段代码和VB6的有一些区别:
◆在声明变量Dim i As Integer = 1时赋值
◆使用+=操作符i += 1代替i = i + 1
◆没有使用Call关键字

一旦我们拥有了一个工作的处理,我们就需要将这段代码分配给一个线程处理,并且启动它。为此我们要VB.NET使用线程对象(Thread object),它是.NET架构类中System.Threading命名空间的一部分。在实例化一个新的线程类时,我们将要在线程类构造器执行的代码块的一个引用传送给它。以下的代码创建一个新的线程对象,并且将BackgroundProcess的一个引用传送给它:

  1. Dim t As Thread  
  2. t = New Thread(AddressOf Me.BackgroundProcess)  
  3. t.Start() 

AddressOf操作符创建了一个到BackgroundProcess方法的委派对象。在VB.NET中,一个委派是一个类型安全、面向对象的函数指针。在实例化该线程后,你可以通过调用线程的Start()方法来开始执行代码。

【编辑推荐】

  1. 详细讲述VB.NET开发控件
  2. VB.NET Control类的属性和方法
  3. 解析VB.NET如何连接数据库
  4. VB.NET应用程序中多线程的应用实例
  5. 浅析VB.NET程序学习经验
责任编辑:佚名 来源: IT168
相关推荐

2009-10-12 13:19:14

VB.NET线程同步

2009-10-09 17:40:38

VB.Net问题集

2010-01-15 15:39:14

VB.NET Sub过

2009-10-13 09:24:57

VB.NET Dock

2009-11-04 09:32:12

VB.NET Auto

2009-10-15 15:14:54

VB.NET临时文件

2009-10-16 13:26:53

VB.NET Exce

2009-10-20 10:23:08

VB.NET多线程编程

2009-10-30 15:51:30

VB.NET使用缺省属

2009-11-10 17:31:38

VB.NET注册表

2009-11-02 17:12:01

VB和VB.NET

2009-10-28 10:04:53

VB.NET XmlW

2009-10-13 14:38:10

VB.NET访问类型

2009-10-15 09:02:19

VB.NET申明数组

2009-10-14 13:56:05

VB.NET数据窗体

2009-11-10 10:28:20

VB.NET诞生

2009-10-19 08:55:22

VB.NET多重继承

2009-10-23 13:10:14

VB.NET List

2009-10-15 11:11:08

VB.NET Text

2009-10-13 09:33:49

VB.NET Web
点赞
收藏

51CTO技术栈公众号