1.執行緒分類
執行緒由程式設計師建立,可是建立的方式不同,總體來說有兩種,一種是個人構造,也就是使用thread類new執行緒物件建立,這一類執行緒是大部分程式設計師知道的,也叫專用線程;還有一種是由clr建立,這一類執行緒主要存在於執行緒池中,也叫執行緒池執行緒。對於這兩種執行緒的好壞,個人建議最好使用執行緒池執行緒,不要大量使用專用線程,對於這乙個問題的**,讀者可以做研究,本文不做討論。
前台執行緒和後台執行緒
而從**的角度來看又可分為前台執行緒和後台執行緒
後台執行緒:後台執行緒是可以隨時被clr關閉而不引發異常的,也就是說當後台執行緒被關閉時,資源的**是立即的,不等待的,也不考慮後台執行緒是否執行完成,就算是正在執行中也立即被終止。【後台,存在於黑暗之中默默無聞,它的消亡和存在,別人也感受不到】
前台執行緒:前台執行緒是不會被立即關閉的,它的關閉只會發生在自己執行完成時,不受外在因素的影響。假如應用程式退出,造成它的前台執行緒終止,此時clr仍然保持活動並執行,使應用程式能繼續執行,當它的的前台執行緒都終止後,整個程序才會被銷毀。
所以應該使用前台執行緒執行確實想完成的任務,比如資料的拷貝等等.
using在上面的程式中我們使用了乙個執行緒預設為前台執行緒,當控制台程式的main函式執行完時,前台執行緒任然在寫檔案,如下如:system;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.threading;
using
system.io;
class
class1
//////
寫檔案
/// static
void
writefile()
\r\n
", datetime.now.tostring()));
fs.write(buff,
0, buff.length);
}thread.sleep(
10);}}
}
2.說明
(1)在任何時候我們都可以通過執行緒的isbackground屬性改變執行緒的前後臺屬性
(2)應用程式的主線程以及使用thread構造的執行緒都預設為前台執行緒
執行緒池執行緒也就是使用 threadpool.queueuserworkitem()和task工廠建立的執行緒都預設為後台執行緒
c 前台執行緒和後台執行緒
前台執行緒 在主線程執行結束後,若前台執行緒沒有執行完則會阻止主線程的關閉 後台執行緒 在主線程執行結束後,整個執行緒會結束 class threadsample public void countnumbers prints thread.currentthread.name,i static v...
C 前台執行緒和後台執行緒
程序會等待所有的前台執行緒完成後再結束本工作 但是如果只剩下後台執行緒,則會直接結束本工作,不會等待後台執行緒完成後再結束本工作。1 new thread建立的執行緒 預設情況下使用new thread 方法建立的執行緒為前台執行緒,可以通過手動設定isbackground屬性來建立乙個後台執行緒 ...
前台執行緒和後台執行緒
net的公用語言執行時 common language runtime,clr 能區分兩種不同型別的執行緒 前台執行緒和後台執行緒。這兩者的區別就是 應用程式必須執行完所有的前台執行緒才可以退出 而對於後台執行緒,應用程式則可以不考慮其是否已經執行完畢而直接退出,所有的後台執行緒在應用程式退出時都會...