您的位置:首页 > 其它

使用Thread类可以创建和控制线程

2013-08-08 13:38 357 查看
1.创建线程

[c-sharp] view plaincopyprint?

static void Main(string[] args)

{

/* Thread类

* 创建控制线程

* 其构造函数接受ThreadStart和ParameterizedThreadStart类型的委托参数

*/

Thread t1 = new Thread(ThreadMain);

t1.Name = "66";

//创建了线程后,可以用Start()方法启动线程啦^-^

t1.Start();

Console.WriteLine("主线程");

/* 使用λ表达式创建线程更简洁 */

Thread t2 = new Thread(() => Console.WriteLine("t2线程"));

t2.Start();

//这个就更简洁 ≡(▔﹏▔)≡

new Thread(() => Console.WriteLine("t3线程")).Start();

Console.ReadLine();

/* 得到结果不能保证哪个结果先输出

* 线程由操作系统调度,每次哪个线程在前不同的

*/

}

//线程中通过委托ThreadStart调用的方法

static void ThreadMain()

{

Console.WriteLine("t1线程,线程名:" + Thread.CurrentThread.Name + ",该线程托管ID:" + Thread.CurrentThread.ManagedThreadId);

}

[c-sharp] view plaincopyprint?

class Program

{

static void Main(string[] args)

{

/* 使用带ParameterizedThreadStart委托参数的Thread构造函数,给线程传送数据 */

//初始化给线程传送的数据

Data d = new Data();

d.Message = "66";

Thread t1 = new Thread(ThreadMainWithParameters);

//使用了ParameterizedThreadStart委托,线程入口必有一object类型参数

t1.Start(d);

Console.ReadLine();

}

//线程中通过委托ParameterizedThreadStart调用的方法

static void ThreadMainWithParameters(object o)

{

Data d = (Data)o;

Console.WriteLine("线程t1,传入参数:" + d.Message);

}

}

//给线程传送数据,需要某个存储数据的类或结构

public struct Data

{

public string Message;

}

class Program
{
static void Main(string[] args)
{
/* 使用带ParameterizedThreadStart委托参数的Thread构造函数,给线程传送数据 */

//初始化给线程传送的数据
Data d = new Data();
d.Message = "66";

Thread t1 = new Thread(ThreadMainWithParameters);
//使用了ParameterizedThreadStart委托,线程入口必有一object类型参数
t1.Start(d);

Console.ReadLine();
}

//线程中通过委托ParameterizedThreadStart调用的方法
static void ThreadMainWithParameters(object o)
{
Data d = (Data)o;
Console.WriteLine("线程t1,传入参数:" + d.Message);
}
}

//给线程传送数据,需要某个存储数据的类或结构
public struct Data
{
public string Message;
}


方法二:创建一个定制类,把线程的方法定义为实例方法,给线程传送数据

[c-sharp] view plaincopyprint?

//定制类

public class MyThread

{

private string data;

public MyThread(string data)

{

this.data = data;

}

//线程中通过委托ThreadStart调用的定制类中的实例方法

public void ThreadMain()

{

Console.WriteLine("线程t1,传入参数:" + data);

}

}

class Program

{

static void Main(string[] args)

{

/* 创建一个定制类,把线程的方法定义为实例方法,给线程传送数据 */

MyThread obj = new MyThread("66");

Thread t1 = new Thread(obj.ThreadMain);

t1.Start();

Console.ReadLine();

}

}

//定制类
public class MyThread
{
private string data;

public MyThread(string data)
{
this.data = data;
}

//线程中通过委托ThreadStart调用的定制类中的实例方法
public void ThreadMain()
{
Console.WriteLine("线程t1,传入参数:" + data);
}
}

class Program
{
static void Main(string[] args)
{
/* 创建一个定制类,把线程的方法定义为实例方法,给线程传送数据 */

MyThread obj = new MyThread("66");

Thread t1 = new Thread(obj.ThreadMain);
t1.Start();

Console.ReadLine();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: