c# 编写的windows服务,线程设置为后台线程,关闭服务的时候会自动关闭么?
1、当在主线程中创建了一个线程,那么该线程的IsBackground默认是设置为FALSE的。
2、当主线程退出的时候,IsBackground=FALSE的线程还会继续执行下去,直到线程执行结束。
3、只有IsBackground=TRUE的线程才会随着主线程的退出而退出。
4、当初始化一个线程,把Thread.IsBackground=true的时候,指示该线程为后台线程。后台线程将会随着主线程的退出而退出。
5、原理:只要所有前台线程都终止后,CLR就会对每一个活在的后台线程调用Abort()来彻底终止应用程序。
线程属于进程.
进程都没了.哪来的线程.
那为什么有时候还要在关闭程序的时候写个关闭线程的代码呢?
@lllrrrkkk: 这个要看实际情况.你举个例子才能说
服务程序是没有UI的,哪来的前台线程。
主线程是前台线程,能保证一直运行不结束。多线程开IsBackground=true,自动跑完就结束了吧,或者你可以在停止之前写个running=false,子线程判断是否执行false的时候就自动结束掉。