浅谈VB.NET线程构造器

开发 后端
这里介绍VB.NET线程构造器,包括介绍调用Thread.Sleep方法来暂停一个线程的执行,这个方法可以接收一个整型值,用来决定线程休眠的时间。

VB.NET有很多值得学习的地方,这里我们主要介绍VB.NET线程构造器,包括介绍调用Thread.Sleep方法等方面。

本文介绍在线程启动中,你可以通过线程对象的一个方法来控制它的状态。你可以通过调用Thread.Sleep方法来暂停一个线程的执行,这个方法可以接收一个整型值,用来决定线程休眠的时间。拿前面的例子来说,如果你想让列表项目增加的速度变慢,可以在其中放入一个sleep方法的调用:

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

CurrentThread是一个public static的属性值,可让你得到当前运行线程的一个引用。

你还可以通过调用Thread.Sleep (System.Threading.Timeout.Infinite)来让线程进入休眠状态,有点特别的是,这个调用的休眠时间是不确定的。要中断这个休眠,你可以调用Thread.Interrupt方法。

与休眠和中断类似的是挂起和恢复。挂起可让你暂停一个线程,直到另一个线程调用Thread.Resume为止。休眠和挂起的区别是,后者并不立刻让线程进入一个等待的状态,线程并不会挂起,直到.NET runtime认为现在已经是一个安全的地方来挂起它了,而休眠则会立刻让线程进入一个等待的状态。

最后要介绍的是Thread.Abort,它会停止一个线程的执行。在我们的那个简单例子中,如果要加入一个按钮来停止处理,很简单,我们只要调用Thread.Abort方法就行了,如下所示:

  1. Private Sub Button2_Click(ByVal sender As System.Object, 
    _ByVal e As System.EventArgs) Handles Button2.Clickt.Abort()  
  2. End Sub 

这就是多线程的强大之处。用户界面的响应很好,因为它运行在一个单独的线程中,而后台的处理运行在另外一个线程中。在用户按下取消按钮时,便会马上得到响应,并且停止处理。

上面的例子只是一个相当简单的应用。在编程时,你还需要使用到多线程的许多复杂特性。其中的一个问题是如何将程序的数据由VB.NET线程构造器传入或者传出,也就是说,对于放到另外一个线程中的过程,你既不能传参数给它,也不能由它返回值。这是由于你传入到VB.NET线程构造器的过程是不能拥有任何的参数或者返回值的。为了解决这个问题,可以将你的过程封装到一个类中,这样方法的参数就可使用类中的字段。

这里我们举一个简单的例子,如果我们要计算一个数的平方,即:

  1. Function Square(ByVal Value As Double) As Double  
  2. Return Value * Value  
  3. End Function 

【编辑推荐】

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

2009-10-14 12:51:41

VB.NET Data

2009-10-20 09:39:04

VB.NET Butt

2009-10-28 10:31:23

VB.NET Impl

2009-10-13 11:22:46

VB.NET调用Web

2009-10-16 10:14:26

VB.NET使用Fil

2009-11-02 16:30:29

VB.NET构造器

2009-11-03 09:48:47

VB.NET构造

2009-11-02 09:43:01

VB.NET构造函数

2010-01-22 15:56:03

VB.NET获取当前U

2009-10-19 11:28:42

VB.NET语言.NET开发语言

2009-10-12 13:11:48

VB.NET使用线程

2009-10-12 13:19:14

VB.NET线程同步

2010-01-21 17:23:05

VB.NET Radi

2010-01-18 18:06:07

VB.NET多线程

2009-10-23 09:26:09

VB.NET多线程

2009-06-29 10:50:18

VB.NET面向对象能力

2010-01-21 15:10:37

VB.NET静态托盘程

2010-01-07 17:57:22

VB.NET构造函数

2009-10-20 14:03:48

VB.NET数组声明VB.NET数组初始化

2009-06-23 11:49:22

跨进程消息钩子VB.NET
点赞
收藏

51CTO技术栈公众号