文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>多线程学习-.NET中线程的基本操作

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

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载