多线程学习-.NET中线程的基本操作
时间:2010-09-30 来源:伊羽
.NET中 线程机制应用相关的类都是放在System.Threading命名空间下,线程操作主要由静态类System.Threading.Thread完成。
线程的基本操作包括启动、挂起、恢复、休眠、终止等
下面的代码演示了线程的最基本操作。
Thread.CurrentThread.Name = "Main Thread";//把当前线程命名为:Main Thread
Console.WriteLine("线程:" + Thread.CurrentThread.Name + " 启动!");
Thread t1 = new Thread(() => {
Console.WriteLine("线程:"+Thread.CurrentThread.Name+" 启动!");
for(Int32 i=0;i<10;i++)
{
if (5 == i)
{
Console.WriteLine("线程:" + Thread.CurrentThread.Name + " 挂起1000毫秒!");
Thread.Sleep(1000);//挂起当前线程2000毫秒(Thread.Sleep(0)表示应挂起此线程以使其他等待线程能够执行);
Console.WriteLine("线程:" + Thread.CurrentThread.Name + " 继续执行!");
}
Console.WriteLine(i);
}
Console.WriteLine("线程:" + Thread.CurrentThread.Name + " 循环执行完毕!");
Console.WriteLine("线程" + Thread.CurrentThread.Name + "的状态:" + Thread.CurrentThread.ThreadState);
});
//若不需要获取新建线程实例,可用直接new Thread(() => {}).Start();
t1.Name = "T1";
t1.Start();//启动线程;
//t1.Suspend();//无限挂起线程; 已过期方法,M$不推荐使用
//t1.Resume();//唤醒被挂起的线程; 已过期方法,M$不推荐使用
Console.WriteLine("线程:" + Thread.CurrentThread.Name + " 被阻塞!");
t1.Join();//直到到子线程完全终止了,主线程才继续运行
Console.WriteLine("线程:" + Thread.CurrentThread.Name + " 继续执行!");
t1.Abort();//终结子线程
/*
while (t1.ThreadState != ThreadState.AbortRequested)
{
Thread.Sleep(1000);
}
*/
Console.WriteLine("线程T1的状态:" + t1.ThreadState);
Console.ReadKey();
执行结果如图所示
创建线程的时候允许带一个Object类型的参数
new Thread((o) => { Console.WriteLine(o.ToString());}).Start("测试带参数的新建线程");
如果要传递多个值可用struct或者class封装起来传递给新建线程。
相关阅读 更多 +










