gate_s

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

net 提供了Thread类用于线程的操作。

当初始化一个线程,把Thread.IsBackground=true的时候,指示该线程为后台线程。后台线程将会随着主线程的推出而退出。后台线程不妨碍程序的终止,只要所有前台线程都终止后,CLR就会对每一个活在的后台线程调用Abort()来彻底终止应用程序。

【注意】当在主线程中创建了一个线程,那么该线程的IsBackground默认是设置为FALSE的。也就是说,当主线程退出的时候,IsBackground=FALSE的线程还会继续执行下去,直到线程执行结束。只有IsBackground=TRUE的线程才会顺着主线程的推出而退出。

static void Main(string[] args)
{        
     Thread[] trd=new Thread[2];
            for (int i = 0; i < 2; i++)
            {
                trd[i]=new Thread(new ThreadStart(ThreadA));
                //trd.Start();
                //trd[i].IsBackground = true;
            }
            Console.WriteLine("\n\t!! 2 mmmm!!");
            trd[0].IsBackground = true;

            trd[0].Start();
            trd[1].Start();
            //trd[1].Join();
            //trd[0].Join();
     return;
}

public static void ThreadA()
        {
            int i = 0;
            Console.WriteLine("id: "+Thread.CurrentThread.ManagedThreadId);
            for (; i < 10000; i++)
            {
                Console.Write("A");
                if (i > 200)
                {
                    Console.WriteLine(i);
                    return;
                }
            }
            Console.WriteLine(i);
            
        }

执行上面的例子可以知道,当主线程显示退出的时候,只要那些IsBackground=TRUE的线程随着主线程一起退出了,而那些IsBackground=FALSE还是需要等到自己执行完成完了之后才会退出


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hukeda0509/archive/2010/05/13/5586437.aspx

posted on 2014-02-14 09:46  gate_s  阅读(196)  评论(0编辑  收藏  举报