C#里线程操作类大概有三个
Thread
BackgroundWorker
ThreadPool
这里先介绍使用Thread创建线程的方法
Thread t; //方法一:使用ThreadStart委托 t = new Thread(new ThreadStart(TProc1)); t.Start(); //方法一的变形:简短形式 t = new Thread(TProc1); t.Start(); //方法一的变形:直接使用委托 t = new Thread(delegate() { Trace.WriteLine("方法一变形线程启动"); }); t.Start(); //方法二:使用ParameterizeThreadStart委托 t = new Thread(new ParameterizedThreadStart(TProc2)); t.Start("参数abc"); //方法二的变形:直接使用委托 t = new Thread(delegate(object obj) { Trace.WriteLine("方法二变形线程启动 " + (string)obj); }); t.Start("参数abc");
在简短形式的调用中,编译器会自动根据线程入口函数TProcx来推断出是ThreadStart委托还是ParameterizedThreadStart委托
上面的方法TProcx可以是静态的也可以是动态的!
Thread的构造函数有四个重载,可接收两种委托类的实例:ThreadStart委托类和ParameterizedThreadStart委托类
ThreadStart委托的声明是:
public delegate void ThreadStart()
ParameterizedThreadStart委托的声明是:
public delegate void ParameterizedThreadStart ( Object obj )