多线程学习-.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封装起来传递给新建线程。
相关阅读 更多 +