VB.NET如何实现线程同步
这篇文章主要介绍了VB.NET如何实现线程同步,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
VB.NET线程同步
在VB.NET线程同步方面,VB.NET提供了几个方法。在上面的平方例子中,你要与执行计算的VB.NET线程同步,以便等待它执行完并且得到结果。另一个例子是,如果你在其它线程中排序一个数组,那么在使用该数组前,你必须等待该处理完成。为了进行这些同步,VB.NET提供了SyncLock声明和 Thread.Join方法。
SyncLock可得到一个对象引用的***锁,只要将该对象传送给SyncLock就行了。通过得到这个***锁,你可以确保多个线程不会访问共享的数据或者在多个线程上执行的代码。要得到一个锁,可使用一个较为便利的对象--与每个类关联的System.Type对象。System.Type对象可通过使用GetType方法得到:
Public Sub CalcSquare() SyncLock GetType(SquareClass) Square = Value * Value End SyncLock End Sub
另一个是Thread.Join方法,它可让你等待一个特定的时间,直到一个线程完成。如果该线程在你指定的时间前完成了,Thread.Join将返回 True,否则它返回False。在平方的例子中,如果你不想使用触发事件的方法,你可以调用Thread.Join的方法来决定计算是否完成了。代码如下所示:
Private Sub Button1_Click(ByVal sender As System.Object,
_ByVal e As System.EventArgs) Handles Button1.ClickDim oSquare As New SquareClass()
t = New Thread(AddressOf oSquare.CalcSquare)
oSquare.Value = 30
t.Start()
If t.Join(500) Then
MsgBox(oSquare.Square)
End If
End Sub
对于这种方法,要注意的是处理事件的过程,在这个例子中的是SquareEventHandler,将运行在产生该事件的线程中。它并不是运行在表格执行的线程中。
感谢你能够认真阅读完这篇文章,希望小编分享的"VB.NET如何实现线程同步"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!