线程操作主要包括线程的创建和管理,以及如何将数据传递到托管线程并返回线程代码的执行结果。
创建线程
创建线程是通过创建新的Thread对象来实现的。Thread类的构造函数需要一个ThreadStart委托或ParameterizedThreadStart委托作为参数。
ThreadStart委托和ParameterizedThreadStart委托表示在Thread上执行的方法。它们的定义如下:
public delegate void ThreadStart ();
public delegate void ParameterizedThreadStart (Object obj);
其中的参数obj包含该线程过程的数据对象。
在调用Thread对象的Start()方法之前,该线程不会开始执行。Start方法立即返回,经常是在实际启动新线程之前返回。新的线程将从ThreadStart或ParameterizedThreadStart委托表示的方法的第一行开始执行。只能调用一次Start()方法,多次调用将引发ThreadStateException异常。
线程启动后可以使用ThreadState和IsAlive属性来确定任何时刻的线程状态,但是绝不应该将这些属性用于同步线程的活动
Thread InstanceCaller = new Thread(new ThreadStart(serverObject.InstanceMethod)); //线程声明
InstanceCaller.Start();//线程启动
2、匿名方法创建线程:
Thread thread1 = new Thread(delegate())
{
Console.WriteLine("进入子线程1");
for (int i = 1; i < 4; ++i)
{
Thread.Sleep(50);
Console.WriteLine("/t+++++++子线程1+++++++++");
}
Console.WriteLine("退出子线程1");
});
thread1.Start();
3、声明线程+函数
Thread _hThread;
_hThread = new Thread(ThreadCallBack);
public void ThreadCallBack()
{
// Do Something
}
_hThread.Start();