using System;
using System.Threading;
public class TestMain
{
//定义一个委托,用于快递哥通知老板
public delegate void tz(Boy b);
//老板,发起任务
public static void Main()
{
//3个快递
Boy[] sender = { new Boy("\t张三"), new Boy("\t\t李四"), new Boy("\t\t\t王五") };
for (int i = 0; i < 3; i++)
{
//告知送达后如何通知
sender[i].SDTZ = wc;
//找了3个快递并指派任务:送花
Thread th = new Thread(new ThreadStart(sender[i].SendFlower));
//出发
th.Start();
}
Console.ReadKey();//等待按键才结束,便于观察结果
}
//送达后的处理
public static void wc(Boy b) {
Console.WriteLine("\n谢谢送花小哥{0}",b.XM);
}
//快递员
public class Boy
{
public tz SDTZ;//委托成员,送达后的动作
private int sd = (new Random()).Next(200,2000);//快递员的速度
public string XM { get; private set; }//快递员的姓名,只能通过构造函数赋值
public Boy(string cxm) { XM = cxm;}
public void SendFlower()
{
Console.WriteLine("\n{0}已出发", XM);
for (int i = 0; i < 10; i++)
{
Thread.Sleep(sd);//休眠线程,让出执行CPU
Console.WriteLine("{0}正在送花的途中……{1}%", XM, (i + 1) * 10);
}
Console.WriteLine("\n{0}:花已经送到", XM);
SDTZ(this);//通知老板
}
}
}