线程嵌套指的是:线程A的执行代码启动了线程B,线程B的执行代码又启动了线程C。
我原本以为线程A被Abort后,线程B会自动被Abort,但是我大错特错了。
在这种场景下,线程的管理就非常重要了。
线程A被Abort后线程B是不会被他的父线程Abort的,除非你强制在线程A中Abort线程B。
在线程A接收到Abort命令后(catch(ThreadAbortException)),Abort线程B即可。
当然,如果你的需求不是在线程A被Abort后,不Abort线程B,那么也可以不Abort线程B,但是这样就放养了线程B,不受管制。
下面是一个例子:
t1启动线程t2,t2启动了t3.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace InnerThread { class Program { static void Main(string[] args) { Thread t1 = new Thread(new ThreadStart(DoWork1)); t1.Name = "T1"; t1.Start(); Thread.Sleep(5000); t1.Abort(); Console.ReadKey();