C#教程:线程的创建
线程的创建
线程是使用Thread类来处理的,该类在System.Threading命名空间中。通过实例化一个Thread对象就可以创建一个线程。创建新的 Thread对象时,将创建新的托管线程。Thread 类接收一个ThreadStart委托或ParameterizedThreadStart委托的构造函数,该委托包装了调用Start 方法时由新线程调用的方法。代码如下:
Thread t = new Thread(new ThreadStart(TestMethord));
t.Start();
上述代码实例化了一个Thread 对象,并指明了将要调用的方法TestMethord,然后启动线程。ThreadStart委托中作为参数的方法不需要参数,并且没有返回值。ParameterizedThreadStart委托一个对象为参数,利用这个参数可以很方便地向线程传递参数。代码如下:
Thread th = new Thread(new ParameterizedThreadStart (TestMethord));
th.Start(99);
99就是向方法传递的参数,ParameterizedThreadStart主要用来调用有参数的方法。
线程是通过线程类Thread来处理的,下面介绍Thread类的属性和方法。
1.Thread类的属性
Thread类的属性及说明如表1所示。

表1 Thread类常用属性及说明
下面对Thread类中比较重要的属性进行详细介绍。
(1)IsAlive属性。获取一个值,该值指示当前线程的执行状态。
语法:
public bool IsAlive { get; }
属性值:如果此线程已启动并且尚未正常终止或中止,则为 True;否则为 False。
(2)Name属性。获取或设置线程的名称。
语法:
public string Name { get; set; }
属性值:包含线程名称的字符串,或者如果未设置名称,则为空引用。
(3)ThreadState 属性。获取一个值,该值包含当前线程的状态。
语法:
public ThreadState ThreadState { get; }
属性值:ThreadState 值之一,它指示当前线程的状态。初始值为 Unstarted。
2.Thread类的方法
Thread类的方法及说明如表2所示。

表2 Thread类常用方法及说明
下面对Thread类中比较重要的方法进行详细介绍。
(1)Abort()方法。在调用此方法的线程上引发 ThreadAbortException,以开始终止此线程的过程。调用此方法通常会终止线程。
语法:
public void Abort ()
通常在关闭线程时调用该方法。
(2)Jion ()方法。在继续执行标准的 COM 和 SendMessage 消息泵处理期间,阻止调用线程,直到某个线程终止为止。
语法:
public void Join ()
使用此方法确保线程已终止。如果线程不终止,则调用方将无限期阻止。
(3)Sleep ()方法。将当前线程按指定的时间挂起。
语法:
public static void Sleep (int millisecondsTimeout)
参数millisecondsTimeout 是指线程被阻止的毫秒数。指定0以指示应挂起此线程以使其他等待线程能够执行。指定 Infinite 以无限期阻止线程。
(4)Start()方法。使线程被安排进行执行。
语法:
public void Start ()
此方法通常用来启动一个线程,但线程一旦终止,它就无法通过再次调用Start方法来重新启动。