简单介绍VB.NET线程同步

开发 后端
这里介绍在VB.NET线程同步方面,VB.NET提供了几个方法。在上面的平方例子中,你要与执行计算的VB.NET线程同步,以便等待它执行完并且得到结果。

学习VB.NET时,经常会遇到VB.NET线程同步问题,这里将介绍VB.NET线程同步问题的解决方法,在这里拿出来和大家分享一下。

VB.NET线程同步

在VB.NET线程同步方面,VB.NET提供了几个方法。在上面的平方例子中,你要与执行计算的VB.NET线程同步,以便等待它执行完并且得到结果。另一个例子是,如果你在其它线程中排序一个数组,那么在使用该数组前,你必须等待该处理完成。为了进行这些同步,VB.NET提供了SyncLock声明和 Thread.Join方法。

SyncLock可得到一个对象引用的***锁,只要将该对象传送给SyncLock就行了。通过得到这个***锁,你可以确保多个线程不会访问共享的数据或者在多个线程上执行的代码。要得到一个锁,可使用一个较为便利的对象--与每个类关联的System.Type对象。System.Type对象可通过使用GetType方法得到:

  1. Public Sub CalcSquare()  
  2. SyncLock GetType(SquareClass)  
  3. Square = Value * Value  
  4. End SyncLock  
  5. End Sub 

另一个是Thread.Join方法,它可让你等待一个特定的时间,直到一个线程完成。如果该线程在你指定的时间前完成了,Thread.Join将返回 True,否则它返回False。在平方的例子中,如果你不想使用触发事件的方法,你可以调用Thread.Join的方法来决定计算是否完成了。代码如下所示:

  1. Private Sub Button1_Click(ByVal sender As System.Object, 
    _ByVal e As System.EventArgs) Handles Button1.Click  
  2. Dim oSquare As New SquareClass()  
  3. t = New Thread(AddressOf oSquare.CalcSquare)  
  4. oSquare.Value = 30 
  5. t.Start()  
  6. If t.Join(500) Then  
  7. MsgBox(oSquare.Square)  
  8. End If  
  9. End Sub 

对于这种方法,要注意的是处理事件的过程,在这个例子中的是SquareEventHandler,将运行在产生该事件的线程中。它并不是运行在表格执行的线程中。

【编辑推荐】

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

2009-11-10 10:28:20

VB.NET诞生

2009-08-18 16:57:24

VB.NET和C#

2010-01-07 16:40:13

VB.NET一维数组

2009-11-02 10:36:16

VB.NET Sub

2009-10-12 13:11:48

VB.NET使用线程

2009-10-28 09:55:29

VB.NET MyCl

2010-01-11 18:32:42

VB.NET序列化

2009-10-16 13:26:53

VB.NET Exce

2009-10-23 17:22:48

VB.NET编程

2009-11-03 14:13:23

VB.NET C#

2009-10-12 15:02:51

VB.NET动态控件

2010-01-21 16:45:00

VB.NET继承规则

2010-01-07 15:25:11

VB.NET数组

2009-10-20 10:23:08

VB.NET多线程编程

2009-10-14 13:56:05

VB.NET数据窗体

2009-10-13 14:38:10

VB.NET访问类型

2009-10-15 09:02:19

VB.NET申明数组

2009-10-09 17:40:38

VB.Net问题集

2010-01-15 15:39:14

VB.NET Sub过

2009-10-23 13:10:14

VB.NET List
点赞
收藏

51CTO技术栈公众号