您的位置:首页 > 编程语言 > C#

C# 使用自定义线程类向线程传递参数

2012-11-09 16:34 393 查看
C# 中的线程 Thread的定义与使用:

1.默认是需要传一个无返回值无参数的方法:void Func();

Thread th = new Thread(Func);

th.Start();

2.默认的向线程中传值,使用的是 ParameterizedThreadStart(Object obj).,无返回值 。它传入的是一个 Object类型的参数。 void Func(Object obj);

Thread th = new Thread(new ParameterizedThreadStart(Func));
th.Start(something);

3.我们可以使用一个类把线程封装起来,这样传什么参数,会自由方便得多。

示例代码:

  

View Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace ThreadTest
{
// 定义一个 封装纯种的抽象类
// 1.需要定义一个Thread。
// 2.一个需要让了类重写的 抽象方法: run,(线程具体的工作)
// 3.一个开始线程的方法 Start.
abstract class MyThread
{
public Thread thr = null;
public abstract void run();
public void Start() {
if (thr == null) {
thr = new Thread(run);
thr.Start();
}
}
}

// 定义一个 类 ,继承自 封装线程类
// 可以随意的增加字段或属性(也就是相当于向线程里传参数)
class Test : MyThread
{
private string name;
private int age;
public Test(string s, int i) {
name = s;
age = i;
}
// 重写 run 方法
public override void run() {
Console.WriteLine("My name is " + name + " and " + age.ToString() + " years old.");
}
}

class Program
{
static void Method(object s) {
Console.WriteLine(s);
}

static void Main(string[] args) {
// 使用线程类
Test t = new Test("zhoutianchi", 30);
t.Start();
// 使用普通的线程传参数 ParameterizedThreadStart(Object obj).
Thread t1 = new Thread(new ParameterizedThreadStart(Method));
t1.Start("zhoutianchi,liuxiaolin,zhouqihan");

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