public class Test
{
static public void ShowInfo()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine("1线程输出的信息");
Thread.Sleep(100);
}
}
public static void Main(string[] argvs)
{
Thread myThread = new Thread(new ThreadStart(Test.ShowInfo));
myThread.Start();
for (int i = 0; i < 10; i++ )
{
Console.WriteLine("主线程执行完毕!");
Thread.Sleep(100);
}
Console.ReadKey();
}
}
static public void ShowInfo(object threadName)
{
string name = threadName as string;
for (int i = 0; i < 5; i++ )
{
Console.WriteLine("{0}在执行!\n", threadName);
Thread.Sleep(100);
}
}
public static void Main(string[] argvs)
{
Thread myThread = new Thread(new ParameterizedThreadStart(Test.ShowInfo));
myThread.Name = "子线程";
myThread.Start(myThread.Name);
ShowInfo("主线程");
Console.ReadKey();
}
当然这个例子只是实现了传入一个参数的例子,但是,很多的时候,我们会要传入很多个参数的,但是这个时候我们要怎么做额。前面已经介绍了,在用ParameterizedThreadStart它来进行初始化一个线程的时候,可以传入一个object的类型,我们都知道,object几乎是可以和任何的类型进行转化的,这个时候我们就会想到要引入一个外部类来实现传入多个参数的问题。
下面通过一个例子来演示通过引入外部类的方法来传入多个参数的具体实现:
namespace StartThread
{
class MyThreadParameter
{
private int interval;
private int loopCount;
///
/// 循环次数
///
public int LoopCount
{
get { return loopCount; }
}
///
/// 线程的暂停间隔
///
public int Interval
{
get { return interval; }
}
///
/// 构造函数
///
/// 线程的暂停间隔
/// 循环次数
public MyThreadParameter(int interval, int loopCount)
{
this.interval = interval;
this.loopCount = loopCount;
}
}
class Program
{
int interval = 200;
static void Main(string[] args)
{
Program p = new Program();
Thread parameterThread = new Thread(new ParameterizedThreadStart(p.MyParameterRun));
parameterThread.Name = "Thread A:";
MyThreadParameter paramter = new MyThreadParameter(50, 20);
parameterThread.Start(paramter);
Console.ReadKey();
}
///
/// 带多个参数的启动方法
///
/// 方法参数
public void MyParameterRun(object ms)
{
MyThreadParameter parameter = ms as MyThreadParameter;//类型转换
if (parameter != null)
{
for (int i = 0; i < parameter.LoopCount; i++)
{
Console.WriteLine(Thread.CurrentThread.Name + "系统当前时间毫秒值:" + DateTime.Now.Millisecond.ToString());
Thread.Sleep(parameter.Interval);//让线程暂停
}
}
}
}
}
运行结果如下图所示
当然还有另外的一种方法,那个方法也是要引入外部类的东西的,但是具体的线程的创建和线程的执行都是在这个类中进行的操作的,具体的实现这里就不上例子了,大家可以思考一下。