1. 程式人生 > 其它 >C# 多執行緒實踐 -- Thread

C# 多執行緒實踐 -- Thread

Thread

建立執行緒

Thread t = new Thread(Test);
            t.Start();

public void Test()
        {
            for (int i = 0; i < 10; i++)
            {
                Thread.Sleep(1000);
            }
        }

Thread t = new Thread(Test);
            t.Start(""); // 這裡用空字串作為引數

// 引數只能必須是object型別,因為Thread建構函式的引數是一個引數是object返回值是void的委託(見下圖)
public void Test(object obj)
        {
            for (int i = 0; i < 3; i++)
            {
                Thread.Sleep(1000);
                Console.WriteLine(i + " " + Thread.CurrentThread.ManagedThreadId);
            }
        }

Join() 阻塞當前執行緒,等待子執行緒執行完成
Join(100) 引數是毫秒的過載,阻塞當前執行緒,等待子執行緒執行完成,或等待100毫秒停止阻塞

public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();

            Thread t = new Thread(Test);
            t.Start();

            Console.WriteLine("啟動子執行緒");

            // 阻塞當前執行緒,直到子執行緒執行完成
            t.Join();

            // 阻塞當前執行緒,直到子執行緒執行完成 或時間到了就停止阻塞
            // t.Join(100); 

            Console.WriteLine("子執行緒執行結束");
        }

        private void Form3_Load(object sender, EventArgs e)
        {

        }

        public void Test()
        {
            for (int i = 0; i < 3; i++)
            {
                Thread.Sleep(1000);
                Console.WriteLine(i + " " + Thread.CurrentThread.ManagedThreadId);
            }
        }
    }

列印輸出