读书人

C#多线程开发一:使用Thread类创建与启

发布时间: 2013-10-08 17:02:59 作者: rapoo

C#多线程开发1:使用Thread类创建与启动线程

C#中,可以使用Thread类来处理(包含创建,启动,挂起,恢复,终止等操作)线程。本文将介绍如何使用Thread类来创建与启动新线程。

Thread类类位于System.Threading命名空间中。

1、线程创建与启动

实例化一个Thread对象,就创建了一个新的线程。

线程创建后调用Start()方法便可以启动新线程。

下面给出一个使用Thread类创建和启动新线程的实例。

文章一开始,给出实例的完整代码,如下:

//完整的示例代码//求和方法static void CalcSum(){    long sum = 0;    for (long i = 0; i < 1000000000; i++)    {        sum += i;        if (i % 100000000 == 0 && i!=0)        {            Console.WriteLine("workThread-->i={0}:sum={1}",i,sum);        }    }}//求差方法static void CalcGap(){    long gap = 0;    for (long i = 1000000000; i >=0 ; i--)    {         gap = i-1;         if (i % 100000000 == 0 && i != 0)         {             Console.WriteLine("MainThread-->i={0}:gap={1}", i, gap);         }    }}static void Main(string[] args){                      ThreadStart entry = new ThreadStart(CalcSum);//求和方法被定义为工作线程入口    Thread workThread = new Thread(entry);    workThread.Start();    CalcGap();//求差方法被主线程调用}

在实例中,定义了两个方法,一个求和方法(CalcSum)和一个求差方法(CalcGap)。

求差方法在Main函数中被调用,这个很容易被看出,不做过多解释。

那么实例中的求和方法被谁调用了呢?回答这个问题前,我们需要对Thread类的实例化操作做个简单的说明。

Thread类在实例化时,需要给其构造函数传入一个参数,用于指定线程开始执行的方法(线程入口)。我们查看Thread类的定义,发现其构造函数有以下重载形式:

C#多线程开发一:使用Thread类创建与启动线程

在这里,我们使用下面这个构造函数来实例化Thread对象(其他构造函数的使用会在后续博文中介绍):

public Thread(ThreadStart start);

该构造函数接受一个ThreadStart 类型的入参。

查看ThreadStart 类型的定义,如下:

public delegate void ThreadStart();

通过阅读定义,我们了解到,ThreadStart是一个委托类型,该委托类型封装的方法没有入参也没有返回值。

ThreadStart委托类型的定义同样位于System.Threading命名空间中。

到这里,我们可以简单总结一下Thread对象的实例化过程,包含以下步骤:

读书人网 >C#

热点推荐