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);
}
}
}
打印输出