线程——前台与后台

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)
{

}
}

 

你会发现当你单击了窗体的退出按钮后,任务管理器中该应用程序仍然在运行,也就是说该程序没有结束。导致这一结果的原因就是存在一个前台线程没有结束。

 

从这里你就会发现前台和后台线程的区别,应该是会根据实际情况去使用这两种线程了吧

 

 

posted @ 2010-10-18 13:46  m苗子  阅读(1516)  评论(1编辑  收藏  举报