C# 多執行緒實踐 -- Thread
阿新 • • 發佈:2021-10-13
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); } } }
列印輸出