ITPub博客

首页 > Linux操作系统 > Linux操作系统 > IsBackground

IsBackground

原创 Linux操作系统 作者:CodeAgriculture 时间:2013-03-20 14:57:49 0 删除 编辑

C#中,Thread类有一个IsBackground 的属性.MSDN上对它的解释是:获取或设置一个值,该值指示某个线程是否为后台线程。

在CLR中,线程分为前台线程和后台线程,即每个线程都有一个IsBackground属性。两者在表现形式上的唯一区别是:当前台线程都结束了的时候,整个程序进程也就结束了,即使还有后台线程正在运行,此时,所有剩余的后台线程都 会被停止且不会完成.但是,只要还有一个前台线程没有结束,那么它将阻止程序结束.这就是为什么有些设计不够完美的WinForm程序,在某种特定的情况 下,即使所有的窗口都关闭了,但是在任务管理器的管理列表里仍然可以找到该程序的进程,仍然在消耗着CPU和内存资源.因此,在WinForm程序中,关 闭所有窗口前,应该停止所有前台线程,千万不要遗忘了某个前台线程.应用程序进程的存亡由前台线程决定而于后台线程无关.这就是它们的区别.

用Thread创建的线程默认是前台线程,也就是IsBackground属性默认是false。但我们要注意线程池中的线程默认都是后台线程。

值得说明的一点是:改变线程从前台到后台不会以任何方式改变它在CPU协调程序中的优先级和状态。因为前台后线程与程序进程的优先级无关.
    class Program
    {

        static void Main()
        {
            TestBackGroud shortT = new TestBackGroud(10);
            Thread frontThread = new Thread(new ThreadStart(shortT.PrintValue));
            frontThread.Name = "frontThread";

            TestBackGroud longT = new TestBackGroud(50);
            Thread backGroudThread = new Thread(new ThreadStart(longT.PrintValue));
            backGroudThread.Name = "backGroudThread";
            backGroudThread.IsBackground = true;//為true時為後臺線程,isBackground默認為false,

            frontThread.Start();

            backGroudThread.Start();
        }
    }


public class TestBackGroud
    {
        private int _maxCount;

        public int _MaxCount
        {
            get{return _maxCount;}
            set{_maxCount=value;}
        }
        public TestBackGroud(int count)
        {
            this._maxCount = count;
        }

        public void PrintValue()
        {
            for (int i = 0; i < _MaxCount; i++)
            {
                Console.WriteLine("{0} is count {1}", Thread.CurrentThread.Name, i.ToString());
                Thread.Sleep(250);
            }
            Console.WriteLine("{0} is over", Thread.CurrentThread.Name);
        }
    }


运行效果:当frontThread结束后,执行窗口自动关闭退出,backGroudThread也将终止(实际并未执行完)

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28699126/viewspace-756614/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Task類
请登录后发表评论 登录
全部评论

注册时间:2013-03-07

  • 博文量
    54
  • 访问量
    435952