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);
            }
        }

C# 多线程实践 -- Thread_子线程

C# 多线程实践 -- Thread_i++_02

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);
            }
        }
    }

打印输出
C# 多线程实践 -- Thread_构造函数_03