天天看點

線程的屬性

線程的屬性

一、IsBackground

C#中線程分為前台線程和背景線程:線程建立時不做設定預設是前台線程。即線程屬性 

IsBackground=false;
  Thread.IsBackground = false;//false:設定為前台線程,系統預設為前台線程。       

前台線程和背景線程差別:應用程式必須運作完所有的前台線程才可以退出,隻要有一個前台線程未退出,程序就不會終止!即說的就是程式不會關閉!(即在資料總管中可以看到程序未結束);而對于背景線程,應用程式則可以不考慮其是否已經運作完畢而直接退出,所有的背景線程在應用程式退出時都會自動結束。

線程是寄托在程序上的,程序都結束了,線程也就不複存在了!

二、Threadpool

采用多線程中最首先得一個問題就是線程的管理。C#中通過Threadpool類來提供一個有系統維護的線程池。在使用同時,我們需要用ThreadPool.QueueUserWorkItem() 将線程添加到線程池中。它的函數原型如下:

// 将一個線程放進線程池,該線程的 Start() 方法将調用 WaitCallback 代理對象代表的函數 
    public static bool QueueUserWorkItem(WaitCallback);
    // 重載的方法如下,參數 object 将傳遞給 WaitCallback 所代表的方法 
    public static bool QueueUserWorkItem(WaitCallback, object);       

注意:因為ThreadPool 類是一個靜态類,是以生成它的對象。在整個過程中無需自己建立線程,隻需把要做的工作寫成函數,然後作為參數傳遞給ThreadPool.QueueUserWorkItem()方法就行了,傳遞的方法就是依靠 WaitCallback 代理對象,而線程的建立、管理、運作等工作都是由系統自動完成的,你無須考慮那些複雜的細節問題。

後續學習繼續更新..... 

本文來自部落格園,作者:農碼一生,轉載請注明原文連結:https://www.cnblogs.com/wml-it/p/14798781.html

技術的發展日新月異,随着時間推移,無法保證本部落格所有内容的正确性。如有誤導,請大家見諒,歡迎評論區指正! 個人開源代碼連結: GitHub:

https://github.com/ITMingliang

Gitee:

https://gitee.com/mingliang_it

GitLab:

https://gitlab.com/ITMingliang

進開發學習交流群:
線程的屬性
c#