参考书籍《C#与.NET4高级程序设计(第5版)》
在.NET平台下,应用程序域与线程之间并不是一一对应的关系,在任何时间段内,一个应用程序域内都可能有多个线程。而且,一个特定的线程在他的生命周期内并不一定被限制一个应用程序域中,Windows线程调度程序和CLR会根据需要让线程自由的跨越应用程序域的边界。注意:在同一时间内,一个线程只能运行在一个应用程序域中。当希望访问正承载当前线程的应用程序域时,请调用静态方法Thread.GetDomain();
1 static void ExtractAppDomainHostingThread() 2 { 3 AppDomain ad = Thread.GetDomain(); 4 }
在任何特定的时刻,一个线程也可以移动到一个特定的上下文中,并且它可以由CLR重新部署在一个新的上下文中。
CLR是控制线程移入移出应用程序域和上下文的实体。