C# 線程(設置后台線程、取消捕獲對錯誤線程的調用)


一、什么是線程

  操作系統分配處理器時間的基本單元,也是一個獨立的運行單元。
  特點:
    ①默認情況,一個進程只包含一個線程,從程序的開始到執行結束;
    ②線程可以派生自其它線程,所以一個進程可以包含不同狀態的多個線程,來執行程序的不同部分;
    ③一個進程中的多個線程,將共享該進程的資源;
  用一個通俗的例子講:一個進程相當於一個工廠,線程就是一個個的車間,工廠(進程)由多個車間(線程)組成,
    並包含車間(線程)所需的一切資源。工廠(進程)的工作其實就是依賴於車間(線程)的工作。

二、為什么要用多線程

  ①讓計算機“同時”做多件事情,節約時間

  ②多線程可以讓一個程序“同時”處理多個事情

  ③后台運行進程,提高程序的運行效率,也不會使主界面出現無響應的情況

  ④獲得當前線程和當前進程

三、線程的使用

  引入  using System.Threading;

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private Thread th;

        private void button1_Click(object sender, EventArgs e)
        {
            // 線程分為兩種:
            // 1、前台線程:只有前台線程都關閉才能完成程序關閉(默認屬於前台線程)
            // 2、后台線程:只要前台線程都結束,后台線程自動結束

            // 創建一個線程去執行這個方法
            th = new Thread(Test);

            // 設置后台線程
            th.IsBackground = true;

            // 標記這個線程准備就緒了,可以隨時被執行,具體什么時候執行這個線程由CPU決定
            th.Start();
        }

        private void Test()
        {
            for (int i = 0; i < 100000; i++)
            {
                //Console.WriteLine(i);
                textBox1.Text = i.ToString();
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // 取消捕獲對錯誤線程的調用
            Control.CheckForIllegalCrossThreadCalls = false;
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            // 當你點擊關閉窗體的時候,判斷新線程是否為null
            if (th != null)
            {
                // 立即結束線程。使用了About就不能再start
                th.Abort();
            }
        }
    }

  后續會陸續更新其他資料,喜歡請關注哦!

  我的博客:https://www.cnblogs.com/duhaoran/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM