01.开启线程
通过Thread类创建了一个线程对象,然后通过IsBackground属性指明该线程为后台线程,如果不设置,默认为前台线程。由于前台线程执行完毕后CLR会无条件的中止后台线程的运行,所以在前面的代码中,若是启动了后台线程,主线程将会继续执行。
class Program
{
static void Main(string[] args)
{
Console.WriteLine("前台线程ID:"+Thread.GetCurrentProcessorId());
Thread thread=new Thread(Worker);
thread.IsBackground = true; //是否为后台线程
thread.Start();
Console.ReadKey();
}
public static void Worker()
{
Console.WriteLine("后台线程ID:"+Thread.GetCurrentProcessorId());
Thread.Sleep(2000); //线程休眠2秒
Console.WriteLine("后台线程退出");
}
}
02.
使用函数Join来实现,确保主线程会在后台线程结束后才开始运行
使用Join的时候,主线程会等待后台线程结束之后才能继续执行。前面的代码中,我们使用了Thread构造函数来创建线程对象
static void Main(string[] args)
{
Console.WriteLine("前台线程ID:"+Thread.GetCurrentProcessorId());
Thread thread=new Thread(Worker);
thread.Start();
thread.IsBackground = true; //是否为后台线程
thread.Join();
Console.WriteLine("从主线程退出");
}
public static void Worker()
{
Console.WriteLine("后台线程ID:"+Thread.GetCurrentProcessorId());
Thread.Sleep(1000);
Console.WriteLine("后台线程退出");
}
03.
来源:CSDN
作者:唐孝辉
链接:https://blog.csdn.net/weixin_33950757/article/details/103574326