要求:使用ThreadStart委托,创建一个子线程,子线程完成正整数输出功能,到10为止。知道线程运行结束,主线程才能宣布程序结束,针对多个线程
class SubThread
{
int number;
public Thread workThread;
public SubThread(string name)
{
number = 0;
//定义一个ThreadStart类型的委托ThrStart,委托中构造函数的参数即为Working方法
ThreadStart ThrdStart = new ThreadStart(this.Working);
//创建Thread实例,并把委托作为构造方法的参数
workThread = new Thread(ThrdStart);
workThread.Name = name;
workThread.Start();
}
public void Working()
{
Console.WriteLine("------{0}子线程开始执行------", workThread.Name);
while (number <= 10)
{
Thread.Sleep(300);
Console.WriteLine("{0}子线程,现累计数值到{1}", workThread.Name, number);
number++;
}
Console.WriteLine("------{0}子线程结束------", workThread.Name);
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("主线程开始执行");
ThreadChildren threadChildren = new ThreadChildren("children1");
ThreadChildren threadChildren1 = new ThreadChildren("children2");
ThreadChildren threadChildren2 = new ThreadChildren("children3");
threadChildren.thread.Join();
threadChildren1.thread.Join();
threadChildren2.thread.Join();
Console.WriteLine("主线程执行结束");
Console.Read();
}
}
因为多个子线程是并发执行的,所以运行结果不一致。使用ThreadStart委托勤能指向既无返回值、又无参数的方法。如果需要向该委托创建的线程的方法内部传递参数,采用类的变量来传递