杂谈(浅谈前台线程与后台线程的区别)(15)

今天在理解客户端与服务器的使用的时候,理解的代码中出现了这样的语句:

			Thread thread = new Thread(new ThreadStart(getMSG));//从服务器接受消息
            thread.IsBackground = true;//把他设置为后台线程
            thread.Start();

在第二句中,代码注释是将此线程设置为后台线程,那么什么是后台线程呢?
线程一共有两种,分别是前台线程与后台线程,最常见的就是主线程,主线程其实就是前台线程,这样说可能不是很理解,举个例子在使用浏览器的时候,浏览器的主界面里有很多模块,如果用户点击了小说模块,那么场景是直接跳转的,然后缓冲的那个小圈圈在不断的旋转,等到其他条件基本具备之后,才将整个界面都显示出来,那么可以理解为,后台线程就是处理了用户对浏览器中某个模块的点击事件,而前台线程就是处理了场景转化的之后的数据传输。
可以看出来,后台是用来处理所需时间很短的任务,而前台则正好相反
他俩的区别不止如此
一般来讲:在我们打开一个应用程序的时候,前台线程与后台线程开始运行,当我们关闭程序的时候,程序必须等所有的前台线程结束之后才能退出,而不会管后台程序是否已经运行完毕,而且,在程序成功退出之后,所有的后台线程,不管是运行完还是没有运行完的,都会自动停止。
在进程中,只要有一个前台线程没有结束,进程就不会停止,而当全部前台线程都结束(正常或者非正常结束),所有的后台程序立刻停止

public static void myStaticThreadMethod()
{
    Thread.Sleep(3000);
}
Thread thread = new Thread(myStaticThreadMethod);
// thread.IsBackground = true;
thread.Start()

注释去掉以后点击停止程序会立刻停止,加上之后,程序会睡眠3s然后再关闭。
供个人参考(个人理解可能有错)

发布了67 篇原创文章 · 获赞 3 · 访问量 1915

猜你喜欢

转载自blog.csdn.net/lfanyize/article/details/102979675