1. 程式人生 > >C#學習筆記(11)- 執行緒類與程序類

C#學習筆記(11)- 執行緒類與程序類

為什麼要使用多執行緒?

  • 讓計算機“同時”做多件事情,節約時間
  • 多執行緒可以讓一個程式“同時”處理多個事情
  • 後臺執行程式,提高程式的執行效率,也不會使主介面出現無響應的情況
  • 獲得當前執行緒與當前程序

前臺執行緒與後臺執行緒

  • 前臺執行緒:只有所有的前臺執行緒關閉才能完成程式關閉
  • 後臺執行緒:只要所有的前臺執行緒結束,後臺執行緒自動結束

執行緒的問題

  • 如何實現多執行緒?
  • 如何一個執行緒設定為後臺執行緒?
  • 如何跨執行緒訪問?//這裡標註的只是最初級的方法,還有其他方法,以後再試
  • 關閉主執行緒時,由於種種原因無法同時關閉後臺執行緒,導致後臺執行緒還在訪問窗體裡的控制元件。導致報錯怎麼辦?

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

        Thread th;
        private void button1_Click(object sender, EventArgs e)
        {


            //建立一個執行緒去執行這個方法  

            th = new Thread(Test);
            //標記這個執行緒準備就緒了,可以隨時被執行,具體什麼時候執行這個執行緒
//由CPU決定 //前臺執行緒與後臺執行緒 //前臺執行緒關閉,後臺執行緒自動關閉 th.IsBackground = true; th.Start(); } private void Test() { for (int i = 0; i < 10000; 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) { if(th !=null) { th.Abort(); } } }

程序類

程序類的常用方法如下:

            //開啟應用程式
            Process.Start("notepad");


            //通過一個程序開啟指定的檔案
            //建立一個ProcessStartInfo類
            ProcessStartInfo ps = new ProcessStartInfo(@"C:\Users\lones\Desktop\PITest.txt");
            //建立一個Process類
            Process p = new Process();
            //將ps類賦值給startinfo
            p.StartInfo = ps;
            p.Start();


            Console.ReadKey();