rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 程序开发 » VB.NET

vb.net 多线程 创建线程 破坏线程

多线程

VB语言的一大弱点就是缺乏编写自由线程(free-threaded)程序的能力。在.NET Framework中,所有语言共享CRL(Common Runtime Library,公共运行库),也就是说,你可以用VB.NET、C#或其它.NET语言编写同样的程序。

System.Threading namespace定义了线程类。我们只需要引入System.Threading namespace,即可使用线程类。

System.Threading.Thread类提供线程对象,可以使用Thread类创建或破坏线程。

创建线程使用Thread类的实体创建一个新线程,然后用Thread.Start方法开始执行线程。线程构造器接受一个参数,该参数指明你要在线程中执行的procedure。在下例中,我想在oThread1(Thread类的一个实体)的第二线程中执行SecondThread过程:


oThread1 = New Thread(AddressOf SecondThread)

SecondThread procedure looks like below:

Public Sub SecondThread()

    Dim i As Integer

    For i = 1 To 10

        Console.WriteLine(i.ToString())

    Next

End Sub

然后,调用Thread.Start()开始线程:

oThread1.Start()

下面的代码创建两个第二线程:

Imports System

Imports System.Threading

Module Module1

    Public oThread1 As Thread

    Public oThread2 As Thread

    Sub Main()

        oThread1 = New Thread(AddressOf SecondThread)

      oThread2 = New Thread(AddressOf ThirdThread)

        oThread1.Start()

        oThread2.Start()

    End Sub

    Public Sub SecondThread()

        Dim i As Integer

        For i = 1 To 10

            Console.WriteLine(i.ToString())

        Next

    End Sub

    Public Sub ThirdThread()

        Dim i As Integer

        For i = 1 To 10

            Console.WriteLine("A" + i.ToString())

        Next

    End Sub

End Module

破坏线程 调用Abort方法来破坏(中止)一个线程。在调用Abort之前,确保用IsAlive判断线程处于活动状态。


If oThread1.IsAlive Then

oThread1.Abort()

End If

暂停线程可以使用Sleep方法来暂停线程执行。Sleep方法接受一个以毫秒为单位的参数,指明线程应当暂停多长时间。

下面的例子让线程暂停1秒钟:

oThread2.Sleep(1000)你也可以使用Suspend和Resume方法来挂起和继续线程执行。

设定线程优先级 Thread类的Priority属性用于设定线程优先级。该属性可以设置为Normal,AboveNormal,BelowNormal,Highest和Lowest。如:

oThread2.Priority = ThreadPriority.Highest线程与Apartment使用ApartmentState属性设置线程的apartment类型,该属性值可以为STA,MTA或是Unknown[2]:

oThread.ApartmentState = ApartmentState.MTA MTS意味着可以使用多线程模式,而STA则只能是单线程执行。


Public Enum ApartmentState

STA = 0,

MTA = 1,

Unknown = 2,

顶一下
(0)
踩一下
(0)