日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#:前台线程后台线程

發(fā)布時(shí)間:2024/9/20 C# 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#:前台线程后台线程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.線程分類

線程由程序員創(chuàng)建,可是創(chuàng)建的方式不同,總體來說有兩種,一種是個(gè)人構(gòu)造,也就是使用thread類new線程對(duì)象創(chuàng)建,這一類線程是大部分程序員知道的,也叫專用線程;還有一種是由CLR創(chuàng)建,這一類線程主要存在于線程池中,也叫線程池線程。對(duì)于這兩種線程的好壞,個(gè)人建議最好使用線程池線程,不要大量使用專用線程,對(duì)于這一個(gè)問題的探討,讀者可以做研究,本文不做討論。

前臺(tái)線程和后臺(tái)線程

而從回收的角度來看又可分為前臺(tái)線程和后臺(tái)線程

  后臺(tái)線程:后臺(tái)線程是可以隨時(shí)被CLR關(guān)閉而不引發(fā)異常的,也就是說當(dāng)后臺(tái)線程被關(guān)閉時(shí),資源的回收是立即的,不等待的,也不考慮后臺(tái)線程是否執(zhí)行完成,就算是正在執(zhí)行中也立即被終止。【后臺(tái),存在于黑暗之中默默無聞,它的消亡和存在,別人也感受不到】

  前臺(tái)線程:前臺(tái)線程是不會(huì)被立即關(guān)閉的,它的關(guān)閉只會(huì)發(fā)生在自己執(zhí)行完成時(shí),不受外在因素的影響。假如應(yīng)用程序退出,造成它的前臺(tái)線程終止,此時(shí)CLR仍然保持活動(dòng)并運(yùn)行,使應(yīng)用程序能繼續(xù)運(yùn)行,當(dāng)它的的前臺(tái)線程都終止后,整個(gè)進(jìn)程才會(huì)被銷毀。

所以應(yīng)該使用前臺(tái)線程執(zhí)行確實(shí)想完成的任務(wù),比如數(shù)據(jù)的拷貝等等.

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.IO;class class1 {static void Main(string[] args){Thread tmpThread = new Thread(WriteFile);//默認(rèn)為前臺(tái)線程tmpThread.Name = "TestThread";//tmpThread.IsBackground = true;tmpThread.Start();//Console.ReadKey();}/// <summary>/// 寫文件/// </summary>static void WriteFile(){while (true){using (FileStream fs = File.Open(@"D:\test.txt", FileMode.Append, FileAccess.Write, FileShare.ReadWrite)){byte[] buff = System.Text.UnicodeEncoding.UTF8.GetBytes(string.Format("Time:{0}\r\n", DateTime.Now.ToString()));fs.Write(buff, 0, buff.Length);}Thread.Sleep(10);}} }

在上面的程序中我們使用了一個(gè)線程默認(rèn)為前臺(tái)線程,當(dāng)控制臺(tái)程序的Main函數(shù)執(zhí)行完時(shí),前臺(tái)線程任然在寫文件,如下如:

2.說明

(1)在任何時(shí)候我們都可以通過線程的IsBackground屬性改變線程的前后臺(tái)屬性

(2)應(yīng)用程序的主線程以及使用Thread構(gòu)造的線程都默認(rèn)為前臺(tái)線程

? ? 線程池線程也就是使用?ThreadPool.QueueUserWorkItem()和Task工廠創(chuàng)建的線程都默認(rèn)為后臺(tái)線程

https://www.cnblogs.com/Matcha/p/5334022.html

總結(jié)

以上是生活随笔為你收集整理的C#:前台线程后台线程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。