浅谈VB.NET线程构造器
VB.NET有很多值得学习的地方,这里我们主要介绍VB.NET线程构造器,包括介绍调用Thread.Sleep方法等方面。
本文介绍在线程启动中,你可以通过线程对象的一个方法来控制它的状态。你可以通过调用Thread.Sleep方法来暂停一个线程的执行,这个方法可以接收一个整型值,用来决定线程休眠的时间。拿前面的例子来说,如果你想让列表项目增加的速度变慢,可以在其中放入一个sleep方法的调用:
- Private Sub BackgroundProcess()
- Dim i As Integer = 1
- Do While Tru
- ListBox1.Items.Add("Iterations: " + i)
- i += 1
- Thread.CurrentThread.Sleep(2000)
- Loop
- End Sub
CurrentThread是一个public static的属性值,可让你得到当前运行线程的一个引用。
你还可以通过调用Thread.Sleep (System.Threading.Timeout.Infinite)来让线程进入休眠状态,有点特别的是,这个调用的休眠时间是不确定的。要中断这个休眠,你可以调用Thread.Interrupt方法。
与休眠和中断类似的是挂起和恢复。挂起可让你暂停一个线程,直到另一个线程调用Thread.Resume为止。休眠和挂起的区别是,后者并不立刻让线程进入一个等待的状态,线程并不会挂起,直到.NET runtime认为现在已经是一个安全的地方来挂起它了,而休眠则会立刻让线程进入一个等待的状态。
最后要介绍的是Thread.Abort,它会停止一个线程的执行。在我们的那个简单例子中,如果要加入一个按钮来停止处理,很简单,我们只要调用Thread.Abort方法就行了,如下所示:
- Private Sub Button2_Click(ByVal sender As System.Object,
_ByVal e As System.EventArgs) Handles Button2.Clickt.Abort()- End Sub
这就是多线程的强大之处。用户界面的响应很好,因为它运行在一个单独的线程中,而后台的处理运行在另外一个线程中。在用户按下取消按钮时,便会马上得到响应,并且停止处理。
上面的例子只是一个相当简单的应用。在编程时,你还需要使用到多线程的许多复杂特性。其中的一个问题是如何将程序的数据由VB.NET线程构造器传入或者传出,也就是说,对于放到另外一个线程中的过程,你既不能传参数给它,也不能由它返回值。这是由于你传入到VB.NET线程构造器的过程是不能拥有任何的参数或者返回值的。为了解决这个问题,可以将你的过程封装到一个类中,这样方法的参数就可使用类中的字段。
这里我们举一个简单的例子,如果我们要计算一个数的平方,即:
- Function Square(ByVal Value As Double) As Double
- Return Value * Value
- End Function
【编辑推荐】
- 详细讲述VB.NET开发控件
- VB.NET Control类的属性和方法
- 解析VB.NET如何连接数据库
- VB.NET应用程序中多线程的应用实例
- 浅析VB.NET程序学习经验