C#中的线程分为两类:前台线程与后台线程
后台线程——不会阻止进程结束;所有前台线程结束之后,后台线程无论执行完否都会被强制结束
前台线程——相反就会阻止线程结束
代码示例:
1.1 在winform中,存在一个主界面线程,我另起一个线程作为后台线程,这里通过设置新线程的IsBackground属性来改变线程的类别
代码
private void Form1_Load(object sender, EventArgs e)
{
Thread t1 = new Thread(new ThreadStart(Start));
t1.IsBackground = true;
t1.Start();
}
void Start()
{
while (true)
{
}
}
当我点击窗体退出按钮后,会从任务管理器中看到 该程序是否还在执行,结果如下图
执行中:
点击窗体退出按钮后,任务管理器中的该程序不存在。这说明当前台线程结束后,后台线程也结束啦
1.2 不设置新线程的IsBackground属性 默认的为前台线程 我们再看一下他的执行过程
代码
private void Form1_Load(object sender, EventArgs e)
{
Thread t1 = new Thread(new ThreadStart(Start));
// t1.IsBackground = true;
t1.Start();
}
void Start()
{
while (true)
{
}
}
你会发现当你单击了窗体的退出按钮后,任务管理器中该应用程序仍然在运行,也就是说该程序没有结束。导致这一结果的原因就是存在一个前台线程没有结束。
从这里你就会发现前台和后台线程的区别,应该是会根据实际情况去使用这两种线程了吧